# ES6: Write Higher Order Arrow Functions (Challenge)

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` .

why does this exercise use the const squaredIntegers declaration twice? Why is my code not working ? it should work. I make sure the element is not a negative number and that it is not a decimal.

``````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;
squaredIntegers.filter((element) => {
if(element > 0 && element % 2 === 0) {
return Math.sqrt(element) ;
}
}) ;
// change code above this line
return squaredIntegers;
};
const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);
``````

@aspiringcoder One is in the global scope and the other is in the squareList function.

You return `squareIntegers` which was originally assigned a reference to `arr` (the array passed into the function `squareList`. You never change the value of `squareIntegers` inside `squareList`.

Hint: The `filter` method returns a new array (does not mutate the array it operates on), but the way you have written your code, the new array is not returned.

EDIT: Also, make sure you understand how the “square” of a number is calculated. You are attempting to calculate the square root which is very different.

1 Like

Another hint: filter is not where you will want to do your math. You will want to add (chain) another function after filter.

Also, “% 2” will eliminate odd integers.

1 Like

ok i will learn about chain right now. thank you for the help!