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);
添加回答
舉報