javascript - 为什么我的过滤功能不起作用? (JavaScript)

标签 javascript arrays ecmascript-6

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/

相关文章:

javascript - 如何获取在第一页创建的另一个 php 文件上创建的 JavaScript 对象?

javascript - 使用谷歌分析跟踪链接点击?

javascript - 如何隐藏动态创建的div

java - typescript 枚举的构造函数?

javascript - 带方括号的箭头函数?

javascript - 从数组中的所有对象中提取某些属性

javascript - 使用交叉请求获取 Forge 2-legged 身份验证

c++ - C/C++ 指针和数组帮助

cocoa - NSPredicate 和数组

PHP - 数组大小返回 1?