gpt4 book ai didi

javascript - indexOf 方法如何返回错误值?

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

function bouncer(arr) {
var array = [false, null, 0, NaN, undefined, ""];
var result = [];
for (var i = 0; i < arr.length; i++) {
if (array.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
ex : bouncer([7, "ate", "", false, 9]) should return [7, "ate", 9].

大家好,我试图删除数组输入中的所有错误值,但不知何故,当我运行 bouncer([false,null, 0, NaN, undefined, ""]); 我得到 [NaN] 作为返回值,而我期待一个空数组。有谁知道为什么函数返回错误值?

最佳答案

因为 NaN 实际上是一个概念,而不是一个具体的数字。

考虑两个“数字”0/0sqrt(-1)。这些都不是在实数空间中定义的,因此都给出 NaN,但它们显然是不同的值。

因为 NaN 基本上表示一个无法在 IEEE-754 中表示的未知值,所以它永远不会被认为等于另一个 NaN甚至它本身。

这是正确的做法,因为考虑到在 IEEE-754 中没有实际表示的数字的无穷大(字面意思),它们中的两个是相同数字的机会是无限小的:-)

事实上,isNaN() 的许多实现都依赖于此功能,即(伪代码):

define isNaN(n):
return n != n

要真正解决这个问题,一种方法是从检查数组中删除 NaN 并稍微修改条件:

var array = [false, null, 0, undefined, ""];
:
if ((array.indexOf(arr[i]) === -1) && (! isNaN(arr[i])) {

关于javascript - indexOf 方法如何返回错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943673/

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