3.4 KiB
3.4 KiB
id, title, challengeType
id | title | challengeType |
---|---|---|
587d7b88367417b2b2512b45 | Write Higher Order Arrow Functions | 1 |
Description
map()
, filter()
, and reduce()
, that take other functions as arguments for processing collections of data.
Read the following code:
FBPosts.filter(function(post) {We have written this with
return post.thumbnail !== null && post.shares > 100 && post.likes > 500;
})
filter()
to at least make it somewhat readable. Now compare it to the following code which uses arrow function syntax instead:
FBPosts.filter((post) => post.thumbnail !== null && post.shares > 100 && post.likes > 500)This code is more succinct and accomplishes the same task with fewer lines of code.
Instructions
realNumberArray
and store the new array in the variable squaredIntegers
.
Tests
tests:
- text: <code>squaredIntegers</code> should be a constant variable (by using <code>const</code>).
testString: getUserInput => assert(getUserInput('index').match(/const\s+squaredIntegers/g), '<code>squaredIntegers</code> should be a constant variable (by using <code>const</code>).');
- text: <code>squaredIntegers</code> should be an <code>array</code>
testString: assert(Array.isArray(squaredIntegers), '<code>squaredIntegers</code> should be an <code>array</code>');
- text: <code>squaredIntegers</code> should be <code>[16, 1764, 36]</code>
testString: assert.deepStrictEqual(squaredIntegers, [16, 1764, 36], '<code>squaredIntegers</code> should be <code>[16, 1764, 36]</code>');
- text: <code>function</code> keyword was not used.
testString: getUserInput => assert(!getUserInput('index').match(/function/g), '<code>function</code> keyword was not used.');
- text: loop should not be used
testString: getUserInput => assert(!getUserInput('index').match(/(for)|(while)/g), 'loop should not be used');
- text: <code>map</code>, <code>filter</code>, or <code>reduce</code> should be used
testString: getUserInput => assert(getUserInput('index').match(/map|filter|reduce/g), '<code>map</code>, <code>filter</code>, or <code>reduce</code> should be used');
Challenge Seed
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => {
"use strict";
// change code below this line
const squaredIntegers = arr;
// change code above this line
return squaredIntegers;
};
// test your code
const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);
Solution
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => {
"use strict";
// change code below this line
const squaredIntegers = arr.filter(num => Number.isInteger(num) && num > 0).map((x) => x * x);
// change code above this line
return squaredIntegers;
};
// test your code
const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);