【问题标题】:compare single dimensional Array with Multidimensional array in javascript在javascript中比较一维数组和多维数组
【发布时间】:2019-06-27 12:53:04
【问题描述】:

我正在使用 javascript 来比较单个数组和多维数组。 在这里我想比较这两个数组并显示匹配的值。

  • arr[1,2,3]要在多维数组“md2”中搜索的值。

这是我的代码::: 我已将单个数组和其他数组作为多维数组

var arr = [1,2,3];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
for(var j=0; j<md2.length ; j++){
  if(arr == md2[j]){
    console.log(arr + " ... " + md2[j]);
  }
}

必需的 O/P :- [1,2,3] 应该匹配并且应该显示在控制台中

【问题讨论】:

标签: javascript arrays function multidimensional-array javascript-objects


【解决方案1】:

您可以使用.find().every() 方法在多维数组中查找数组:

var arr1 = [1,2,3];
var arr2 = [1,2,5];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];

var searchAndPrint = (a1, a2) => {
  let arr = a1.find(a => a.every((v, i) => v === a2[i]));
  
  if(arr)
    console.log(arr);
  else
    console.log("No Results");
};

searchAndPrint(md2, arr1);
searchAndPrint(md2, arr2);

【讨论】:

  • 一个更短的解决方案(但可能性能较差),可能是强制字符串中的数组,然后比较它们,而不是使用every
【解决方案2】:

你无法在 js 中比较 arrays。如果您想比较简单的数组,可以将它们转换为 string 进行比较。此方法不适用于包含objects 的数组。

var arr = [1,2,3];
var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
for(var j=0; j<md2.length ; j++){
  if(arr.toString() === md2[j].toString()){
    console.log(arr + " ... " + md2[j]);
  }
}

【讨论】:

    【解决方案3】:

    您可以使用JSON.stringify 来比较数组。

    var arr = [1,2,3];
    var md2 = [[23,8,2],[1,5,8],[1,2,3],[8,5,2]];
    for(var j=0; j<md2.length ; j++){
      if(JSON.stringify(arr) === JSON.stringify(md2[j])){
        console.log(arr + " ... " + md2[j]);
      }
    }

    【讨论】:

      【解决方案4】:

      为了检查,你需要直接检查长度和项目,因为你没有相同的对象引用。

      var arr = [1, 2, 3],
          md2 = [[23, 8, 2], [1, 5, 8], [1, 2, 3], [8, 5, 2]];
          
      console.log(md2.some(a => arr.length === a.length && a.every((v, i) => v === arr[i])));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-24
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 2013-05-19
        相关资源
        最近更新 更多