Javascript过滤器整数

Javascript过滤器整数,javascript,parseint,Javascript,Parseint,我正在FreecodeCamp上学习javascript。而且,解决我的问题对我没有多大帮助。 我们必须过滤保存在常量变量中的数组中的整数 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 &&

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

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%parseIntnum==0.map num=>Math.pownum,2

为什么要使用parseint方法和Math.pow。有人能解释为什么吗

谢谢。

parseIntnum给出num的整数部分,例如parseInt3.14==3//true。 使用num%parseIntnum基本上会给出数字与其整数部分之间的差异。如果不是0,则该数字将被抛出。 pownum给出一个平方数,返回给新数组。尽管如此,num*num在这方面速度更快,不必包括模块和调用对象属性

除此之外,解决方案中的代码非常紧凑,我建议将其分解以提高可读性。它的书写风格似乎增加了混淆。

parseIntnum给出了num的整数部分,例如,parseInt3.14==3//true。
const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
 return squaredIntegers;
使用num%parseIntnum基本上会给出数字与其整数部分之间的差异。如果不是0,则该数字将被抛出。 pownum给出一个平方数,返回给新数组。尽管如此,num*num在这方面速度更快,不必包括模块和调用对象属性

除此之外,解决方案中的代码非常紧凑,我建议将其分解以提高可读性。似乎它的写作风格增加了混乱

const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
 return squaredIntegers;
在过滤器内部,检查num是否为正num>0,num是否为整数。用于检查整数。num%parseIntnum parseInt将num更改为整数,并且数字本身的模数为0,因此条件num%parseIntnum==0。pownum,2用于对数值进行平方运算


在过滤器内部,检查num是否为正num>0,num是否为整数。用于检查整数。num%parseIntnum parseInt将num更改为整数,并且数字本身的模数为0,因此条件num%parseIntnum==0。Math.pownum,2用于计算数值的平方。

许多人都以非常好的方式解释了这一点。你也可以做这部分

const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
像这样,它应该工作没有问题。希望这能有所帮助

const squaredIntegers = arr.filter( (num) => num > 0 && num % 1 === 0 ).map( (num) => num * num );

很多人都用很好的方式解释了这一点。你也可以做这部分

const squaredIntegers = arr.filter( (num) => num > 0 && num % parseInt(num) === 0 ).map( (num) => Math.pow(num, 2) );
像这样,它应该工作没有问题。希望这能有所帮助

const squaredIntegers = arr.filter( (num) => num > 0 && num % 1 === 0 ).map( (num) => num * num );
对于您的问题,这可能是一个更简单的解决方案,尽管上面所有的解决方案都很好地工作。num*num也可以替换为Math.pownum,2


对于您的问题,这可能是一个更简单的解决方案,尽管上面所有的解决方案都很好地工作。num*num也可以替换为Math.pownum,2。

第一个基本上是一个整数检查。如果num是一个整数,num和parseIntnum相等,因此num%num===0表示第二个平方num。更好的方法是在这里使用num=>num*num。这里使用两种方法。第一个是filter num=>num>0&&num%parseIntnum==0。它过滤数组并返回一个数字大于0的数组。第二个map num=>Math.pownum,第二个map num=>Math.pownum,第二个map num在第一个map num之后返回一个数组,并返回一个数组,其中前一个数组的每个元素都是平方的。第一个map num基本上是一个整数检查。如果num是一个整数,num和parseIntnum相等,因此num%num===0表示第二个平方num。更好的方法是在这里使用num=>num*num。这里使用两种方法。第一个是filter num=>num>0&&num%parseIntnum==0。它过滤数组并返回一个数字大于0的数组。第二个map num=>Math.pownum,2在第一个map num之后获取一个返回的数组,并返回一个数组,其中前一个数组的每个元素都是平方的。