3 回答
TA贡献1840条经验 获得超5个赞
您可以编写一个简单的函数来搜索数组列表,请记住,在比较之前需要这样做。以下是一些示例,可以了解它是否也被发现:arr2sortindexarr2
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;
}
更快的解决方案是将它们存储在对象中,如下所示:
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 set = {};
for(let i = 0; i < arr1.length; i++)
set[arr1[i].sort()] = i;
return (set[arr2]!=undefined)?set[arr2]:-1;
}
TA贡献1891条经验 获得超3个赞
为什么不直接使用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!")
}
}
TA贡献1876条经验 获得超7个赞
你可以做这样的事情:
arr1 = [[1,2]]
arr2 = [1,2]
a = JSON.stringify(arr1);
b = JSON.stringify(arr2);
并检查索引的值,如果 arr2 不在 arr1 内,它将返回 -1
a.indexOf(b);
添加回答
举报
