在数组中查找元素的常用方法是使用Array的indexOf()方法。当存在具有负索引的元素时,即出现问题,即-1。检查这种情况:
var arr = [];
arr[-1] = '2';
console.log(arr.indexOf('2')); // -1
console.log(arr.indexOf('unknown')); //-1
基本上,我可以实现一种解决方法,以区分非现有元素和索引为-1的元素(重复类似于indexOf中的逻辑,并在无法找到元素时返回NaN),但只是好奇 - 不是'有解决上述问题的现有实施吗?
答案 0 :(得分:3)
阵列不能有负面指数。当您执行arr[-1] = '2'
时,您需要设置" -1"而是数组对象的属性。
执行arr.indexOf('2');
时,它实际上找不到任何内容,因此返回-1表示"找不到元素",而不是"在索引-1&#34处找到;。证明:
var arr = [];
arr[-2] = '2';
console.log(arr.indexOf('2')); // -1