gpt4 book ai didi

javascript - 如果数组是稀疏的,为什么 array.indexOf(undefined) 不起作用

转载 作者:可可西里 更新时间:2023-11-01 02:04:01 25 4
gpt4 key购买 nike

我是 JavaScript 的新手,有一件事困扰着我。我有一个非常简单的代码:

var a = [];
a[1] = 1;

i = typeof(a[0]);
index = a.indexOf(undefined);
len = a.length;

console.log(a);
console.log("\n" + len);
console.log("\n" + i);
console.log("\n" + index);

我的问题是:为什么 indexOf 返回 -1,而不是 0。我知道这个方法通过 === 进行比较,但我使用关键字 undefined 作为参数。如果我将方法参数更改为“未定义”,它也不起作用(但这对我来说很明显)。有人可以向我解释一下并告诉我在数组中查找未定义值的最简单方法是什么吗?

最佳答案

这实际上会在数组中找到一个 undefined 值,问题是你的数组 a 没有任何 undefined 值在里面,所以它返回 -1 意味着它没有找到任何东西。你的数组看起来像:

[*未初始化*, 1]

你在第一个位置什么都没放的事实并不意味着它填充了 undefined,它只是没有初始化/不存在。

如果你做了类似的事情:

var a = [undefined, 1];
var index = a.indexOf(undefined);
console.log(index);

它实际上会按预期打印 0

编辑:要回答有关如何查找未初始化值的问题,请执行以下操作

var a = [];
a[1] = 1;

for(var i = 0; i < a.length; i++){
if(a[i] === undefined){
console.log(i);
}
}

这将打印未初始化数组值的索引。这实际上与 indexOf 不同的原因是 a[i] 将评估为 undefined 如果:

(1) 元素存在且值为undefined,或者

(2) 该元素根本不存在。 indexOf 但是会跳过数组中的这些“空白”。

关于javascript - 如果数组是稀疏的,为什么 array.indexOf(undefined) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949699/

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