--- id: 587d7b88367417b2b2512b45 title: Write Higher Order Arrow Functions challengeType: 1 --- ## Description
It's time we see how powerful arrow functions are when processing data. Arrow functions work really well with higher order functions, such as map(), filter(), and reduce(), that take other functions as arguments for processing collections of data. Read the following code:
FBPosts.filter(function(post) {
  return post.thumbnail !== null && post.shares > 100 && post.likes > 500;
})
We have written this with 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
Use arrow function syntax to compute the square of only the positive integers (decimal numbers are not integers) in the array realNumberArray and store the new array in the variable squaredIntegers.
## Tests
```yml tests: - text: squaredIntegers should be a constant variable (by using const). testString: getUserInput => assert(getUserInput('index').match(/const\s+squaredIntegers/g), 'squaredIntegers should be a constant variable (by using const).'); - text: squaredIntegers should be an array testString: assert(Array.isArray(squaredIntegers), 'squaredIntegers should be an array'); - text: squaredIntegers should be [16, 1764, 36] testString: assert.deepStrictEqual(squaredIntegers, [16, 1764, 36], 'squaredIntegers should be [16, 1764, 36]'); - text: function keyword was not used. testString: getUserInput => assert(!getUserInput('index').match(/function/g), 'function 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: map, filter, or reduce should be used testString: getUserInput => assert(getUserInput('index').match(/map|filter|reduce/g), 'map, filter, or reduce should be used'); ```
## Challenge Seed
```js 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
```js 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); ```