Use Higher-Order Functions map, filter, or reduce to Solve a Complex Problem
Problem Explanation
We need to compute and square values from the realNumberArray
and store them in the variable squaredIntegers
using the map()
, filter()
, and/or reduce()
functions.
Hints
Hint 1
- You will need to
filter()
therealNumberArray
for positive integers (decimals are not integers).
Hint 2
- You will need to
map()
the values from yourfilter()
function to the variablesquaredIntegers
.
Hint 3
- Remember the magic of chaining functions.
Solutions
Solution 1 (Click to Show/Hide)
const squareList = (arr) => {
// Only change code below this line
return arr
.filter(num => num > 0 && num % parseInt(num) === 0)
.map(num => Math.pow(num, 2));
// Only change code above this line
};
const squaredIntegers = squareList([-3, 4.8, 5, 3, -3.2]);
console.log(squaredIntegers);
Code Explanation
Uses the operator filter()
and map()
functions to square all positive integers in a given array.
Solution 2 (Click to Show/Hide)
const squareList = arr => {
return arr.reduce((sqrIntegers, num) => {
return Number.isInteger(num) && num > 0
? sqrIntegers.concat(num * num)
: sqrIntegers;
}, []);
};
Code Explanation
This does basically the same but uses the isInteger()
method to check the numbers.