将数组与JavaScript中的数组进行比较

时间:2017-06-13 00:56:09

标签: javascript html

我想将数组与数组进行比较。 例如,

array 1 = [[1,2,3],[1,4,5]];
array 2 = [1,3,6,5,4];

由于数组2中的元素1,4,5与数组1中的集匹配,因此它应返回true。

5 个答案:

答案 0 :(得分:1)

迭代你的数组并检查另一个数组中是否存在该值。

var sets = [
    [1, 2, 3],
    [1, 4, 5]
  ],
  valid = [1, 3, 6, 5, 4];

var processed = sets.map(set => set.every(val => valid.includes(val)));

console.log( processed);

有一些方法可以提高效率,但请先尝试一下。

以下是一个如何检查是否为真的示例:

// Check if any are true
var any = processed.some(v=>v);
console.log( any );

答案 1 :(得分:1)

使用循环和循环。获取array1中的所有子数组,并检查每个子数组包含在array2中。

function check(){
  var array1 = [[1,2,3],[1,4,5]];
  var array2 = [1,3,6,5,4];
  for(let arr of array1){
    let flag=true;
    for(let child of arr){
      if(array2.indexOf(child) < 0){
        flag = false;
        break;  // if one element not in array2, enter next loop.
      }
    }
    if(flag) return flag; // if got one child array elements all in array2, stop loop.
  }
}

答案 2 :(得分:0)

展平第一个数组(解压缩嵌套数组)。然后执行展平数组intersection和第二个数组。映射第一个数组,并为每个数组对第二个数组执行intersection。然后过滤掉所有空的数组。如果结果数组包含某些内容,那么匹配的东西。

const hasMatch = Boolean(array1.map(a => intersect(a, array2)).filter(i => i.length).length)

答案 3 :(得分:0)

&#13;
&#13;
var array1 = [
  [1, 2, 3],
  [1, 4, 5]
];


var array2 = [1, 3, 6, 5, 4];

var isMatch = doesNestedArrayMatchArray(array1, array2);

function doesNestedArrayMatchArray(nestedArray, bigArray) {
  var atLeastOneMatch = false;

  for (var i = 0; i < nestedArray.length; i++) {
    var innerMatch = true;

    //go through each array of array1
    for (var j = 0; j < nestedArray[i].length; j++) {
      if (bigArray.indexOf(nestedArray[i][j]) == -1){
      	  innerMatch = false;
          break;
        }
    }

    if (innerMatch) atLeastOneMatch = true;
  }

  return atLeastOneMatch;
}

console.log(isMatch)
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您可以迭代array1并在每个数字组上使用every()作为条件,使用includes()和第二个数组,语法相对较短:

&#13;
&#13;
var array1 = [
  [1, 2, 3],
  [1, 4, 5]
];
var array2 = [1, 3, 6, 5, 4];
var results = [];

array1.forEach(function(item, index, array) {
  if (item.every(x => array2.includes(x))) {
    results.push(item)
  }
});

console.log(results)
&#13;
&#13;
&#13;

已编辑:我推送返回true的结果为空数组...