if
block 正在正确执行。代码有什么问题?
let arr = [4, -4, 5.8, 1.6];
let newA = arr.filter((x) => {
if (x > 0 && Number.isInteger(x)) {
return x * x;
}
})
console.log(newA);
预期输出
[16]
实际输出:
[4]
为什么?
最佳答案
给定的代码执行过滤部分,因为任何二次正整数都是 truthy值,但它不返回新值。
看起来,您需要两个操作,一个是过滤并更改过滤后的值。
在这种情况下,您需要 Array#filter
用于获得正整数和 Array#map
对于二次值。
let array = [4, -4, 5.8, 1.6],
result = array
.filter(x => x > 0 && Number.isInteger(x))
.map(x => x * x);
console.log(result);
关于javascript - 为什么我的过滤功能不起作用? (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868497/