如果我有2个这样的数组:
arr1 = [[1,2]]
arr2 = [1,2]
如何检查arr1中是否存在arr2? 我尝试了以下方法:
arr1.includes(arr2)
但这返回false。在JS中有一种简单的方法吗?
编辑:我也想在arr1中获得arr2的真实索引。例如:
arr1.indexOf(arr2) => 0
因为arr2是arr1的第一个索引。
答案 0 :(得分:1)
您可以编写一个简单的函数,在数组列表中搜索arr2
,请记住,比较之前需要sort
。如果找到index
的{{1}},以下是一些示例:
arr2
一种更快的解决方案是将它们存储在一个对象中,如下所示:
let arr1 = [[1,2]];
let arr2 = [1,2];
console.log(arrayInList(arr1,arr2));
arr2 = [1,3]
console.log(arrayInList(arr1,arr2));
function arrayInList(arr1, arr2){
if(!arr1 || arr1.length==0 || !arr2 || arr2.length==0)
return false;
arr2 = arr2.sort();
let foundIndex = -1;
for(let i = 0; i < arr1.length; i++){
let current = arr1[i].sort();
if(current.length != arr2.length)
continue;
let areEqual = true;
for(let j = 0; j < arr2.length; j++){
if(arr2[j] != current[j]){
areEqual = false;
break;
}
}
if(!areEqual){
continue;
}else{
foundIndex = i;
break;
}
}
return foundIndex;
}
答案 1 :(得分:1)
为什么不只使用Array.isArray?
let arr1 = [[1,2]];
let arr2 = [1,2];
for (let i = 0; arr1.length; i++) {
if (Array.isArray(arr1[i])) {
console.log("Found array!")
}
}
答案 2 :(得分:0)
您可以执行以下操作:
arr1 = [[1,2]]
arr2 = [1,2]
a = JSON.stringify(arr1);
b = JSON.stringify(arr2);
并检查索引的值,如果arr2不在arr1内,它将返回-1
a.indexOf(b);