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

Kri*_*mal 3 javascript arrays ecmascript-6

if块正在正常执行.代码有什么问题?

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);
Run Code Online (Sandbox Code Playgroud)

预期产出

[16]
Run Code Online (Sandbox Code Playgroud)

实际产量:

[4]
Run Code Online (Sandbox Code Playgroud)

为什么?

Nin*_*olz 5

给定的代码执行过滤部分,因为任何二次正整数都是值,但它不会返回新值.

看起来,您需要两个操作,一个过滤并更改过滤后的值.

在这种情况下,您需要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);
Run Code Online (Sandbox Code Playgroud)