gpt4 book ai didi

javascript - 使用 Number 函数作为过滤器时数组​.filter 出现意外结果

转载 作者:行者123 更新时间:2023-11-28 11:20:24 26 4
gpt4 key购买 nike

我刚刚在使用Array​.prototype​.filter()时发现了这个问题,有人可以解释一下为什么吗?

我有这两个数组

[0, NaN, NaN, NaN]

[1, NaN, NaN, NaN]

当我使用Number调用filter()时类型过滤器第一个返回是一个空数组,第二个返回是一个数组。

我认为检查0作为Number失败了,但为什么呢?我试图构建一个 Number0而且效果很明显。

console.log([0, NaN, NaN, NaN].filter(Number)); // []

console.log([1, NaN, NaN, NaN].filter(Number)); // [1]

// other examples
console.log([0, 1, 2, 3].filter(Number)); // [1, 2, 3]

console.log([1, 2, 3, 4].filter(Number)); // [1, 2, 3, 4]

console.log([0.1, 0.2, 0.3, 0.4].filter(Number)); // [0.1, 0.2, 0.3, 0.4]

console.log([1.1, 2.2, 3.3, 4.4].filter(Number)); // [1.1, 2.2, 3.3, 4.4]

console.log([-1, -2, -3, -4].filter(Number)); // [-1, -2, -3, -4]

提前谢谢你们。

最佳答案

Array.filter

The filter() method creates a new array with all elements that pass the test implemented by the provided function.

0NaN 都是 falsey 值,因此它们会被过滤函数删除。

要过滤 0,您可以使用 isNaN就像下面这样

console.log([0, NaN, NaN, NaN].filter(v => !isNaN(v))); // [0]

关于javascript - 使用 Number 函数作为过滤器时数组​.filter 出现意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com