检查数组是否包含另一个数组JS

时间:2020-05-14 21:05:05

标签: javascript arrays

如果我有2个这样的数组:

arr1 = [[1,2]]
arr2 = [1,2]

如何检查arr1中是否存在arr2? 我尝试了以下方法:

arr1.includes(arr2)

但这返回false。在JS中有一种简单的方法吗?

编辑:我也想在arr1中获得arr2的真实索引。例如:

arr1.indexOf(arr2) => 0

因为arr2是arr1的第一个索引。

3 个答案:

答案 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);