我正在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。有人能解释一下为什么吗?
谢谢.
7条答案
按热度按时间m1m5dgzv1#
parseInt(num)
给出num的整数部分,例如parseInt(3.14) === 3 //true
。使用num % parseInt(num)
基本上给出了数字和其整数部分之间的差异。如果不是0
,则数字被抛出。Math.pow(num)
给出了平方数,返回到新数组。尽管,num * num
在这方面更快,不需要包含模块和调用对象属性。除此之外,解决方案中的代码非常拥挤,我建议将其分解以提高可读性。似乎编写它的风格增加了混乱。
cld4siwp2#
字符串
在
filter
中,检查num
是否为正(num>0)
,num
是否为integer
。为了检查整数。num % parseInt(num)
parseInt将num更改为integer
,并且数字本身的modulus
为0,因此条件num % parseInt(num)==0
.Math.pow(num,2)
用于平方num。tvokkenx3#
字符串
这可能是一个更容易解决您的问题的解决方案,尽管上述所有解决方案都可以正常工作。
num*num
也可以替换为Math.pow(num, 2)
。zsohkypk4#
试试这个,它不仅会过滤掉否定的一次,也只返回那些被否定的。
字符串
wi3ka0sx5#
很多人已经用一种很好的方式解释了这一点。你也可以做这部分
字符串
就像这样,它应该能正常工作。希望,这能帮上忙。
型
62o28rlo6#
使用reduce语句的一种更简单的方法是
字符串
其中Number.iscalled()用于过滤小数,user > 0用于过滤小数中的负值
5gfr0r5j7#
这里有一个更简单的方法来解决你的问题:
字符串