gpt4 book ai didi

javascript - 使用javascript的多个数组的IndexOf数组

转载 作者:行者123 更新时间:2023-11-28 12:17:45 25 4
gpt4 key购买 nike

我有一个这样的数组:

var array = [ [1,2] , [2,2,2] , 3 , [3,4] ];

所以我想用indexOf来拼接一个元素。

示例:

var index = array.indexOf( [2,2,2] );
array.splice(index, 1)

预期=>

array = [ [1,2] , 3 , [3,4] ]

但问题是索引返回-1(假值)..如何解决这个问题?

最佳答案

问题是,您有两个具有相同基元的数组,但数组不相等。

比较适用于对象,而不适用于内部的值。

console.log([2, 2, 2] === [2, 2, 2]); // false

var array = [2, 2, 2];
console.log(array === array); // true

如果您搜索具有相同对象引用的相同数组,那么您将获得正确的索引。

var search = [2, 2, 2],                  // array to serach for
array = [[1, 2], search, 3, [3, 4]], // array with search array
index = array.indexOf(search); // get the index

array.splice(index, 1);

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

在 ES5 中,您可以搜索索引并使用搜索对象的字符串化版本来检查 Array#some .

var array = [[1, 2], [2, 2, 2], 3, [3, 4]],
search = [2, 2, 2],
index = -1;

array.some(function(a, i) {
if (JSON.stringify(a) === JSON.stringify(search)) {
index = i;
return true;
}
});

if (index !== -1) {
array.splice(index, 1);
}
console.log(array);

ES6 带有 Array#findIndex

var array = [[1, 2], [2, 2, 2], 3, [3, 4]],
search = [2, 2, 2],
index = array.findIndex(a => JSON.stringify(a) === JSON.stringify(search));

if (index !== -1) {
array.splice(index, 1);
}
console.log(array)

关于javascript - 使用javascript的多个数组的IndexOf数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45210694/

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