Javascript筛选器整数

时间:2019-01-14 11:43:11

标签: javascript parseint

我正在FreecodeCamp上学习javascript。而且,解决我的问题对我没有多大帮助。 我们必须过滤保存在const变量中的数组中的整数。

const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => {
  "use strict";
const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
 return squaredIntegers;
};

const squaredIntegers = squareList(realNumberArray);
console.log(squaredIntegers);

我真的无法理解这部分num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );

为什么要使用parseint()方法和Math.pow。有人可以解释我为什么?

谢谢。

5 个答案:

答案 0 :(得分:3)

parseInt(num)给出num的整数部分,例如parseInt(3.14) === 3 //true。 使用num % parseInt(num)基本上会在数字及其整数部分之间产生差异。如果不是0,则数字被舍弃。 Math.pow(num)给出一个平方数,该平方数将返回到新数组。不过,num * num在这方面更快,而不必包括模块和调用对象属性。

除此之外,解决方案中的代码非常拥挤,我建议将其分解以提高可读性。似乎它的编写样式加剧了混​​乱。

答案 1 :(得分:2)

const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
 return squaredIntegers;

filter内,检查num是否为正(num>0)numinteger。用于检查整数。 num % parseInt(num) parseInt将num更改为integer,并且数字modulus本身为0,因此条件为num % parseInt(num)==0Math.pow(num,2)用于对数字取平方。

答案 2 :(得分:0)

许多人都很好地解释了这一点。您也可以做这部分

SearchPer()

就像这样,它应该可以正常工作。希望这会有所帮助。

const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );

答案 3 :(得分:0)

const squaredIntegers = arr.filter(
    (num) => {
        if (Number.isInteger(num) && num >0){
        return num;
}}
).map((num) => num *num); // Math.pow(num, 2) can also be used here
return squaredIntegers;
};

这可能是解决您问题的简便方法,尽管上述所有解决方案也可以正常工作。 num*num也可以替换为Math.pow(num, 2)

答案 4 :(得分:0)

Try This One 不仅一次过滤掉负数,还只返回整数。

const squareList = arr => {
  let myArr = arr
        .filter(item => item > 0)
        .reduce((a, current) => a.concat(current*current) , [])
        .filter(num => Number.isInteger(num));
  return myArr;
};

const squaredIntegers = squareList([4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2]);
console.log(squaredIntegers);// Prints : [16, 1764, 36] on console.