Javascript:如何在多个数组中搜索相同的值

时间:2015-12-27 23:22:48

标签: javascript arrays compare

这个想法是它查看一个未指定数量的数组(自己保存在数组中),并搜索每个数组中的相似值。我已经尝试了一下,但我无法想到任何数量的for循环或临时数组来保存价值来解决我的问题。

示例:

[[2,3,5]
 [2,3,5]
 [2,3,7]]

这个2D数组是它将被使用的一个例子,代码应该给出的返回值是:

2,3

因为这些数字出现在所有3个案例中,同样会在未指定数量的阵列上使用,但由于我还没有做过任何事情,我不知道从哪里开始。

我很抱歉我无法提供任何尝试过的代码,但我必须构建一些嵌套的for循环,然后坐着看着它想知道要写什么...

3 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.reduce()来实现此目的,例如:

var arrays = [[2,3,5],
              [2,3,5],
              [2,3,7]];

var result = arrays.reduce(function(r, nested, idx, arr) {
    nested.forEach(function(item) {
        r.counts[item] = r.counts[item] ? ++r.counts[item] : 1;
        if (r.counts[item] === arr.length) {
            r.res.push(item);
        }
    });
    return r;
}, {counts:{}, res:[]}).res;

console.log(result);

答案 1 :(得分:0)

使用indexOf,您可以检查数组中是否存在某个值,

所以你可以过滤第一个数组的每个值,检查它是否存在于所有其他数组中:



var array=[
 [2,3,5],
 [2,3,5],
 [2,3,7]
];

var res = array[0].filter(function(x){
 return array.every(function(y){
   return y.indexOf(x) >= 0
 })
})

console.log(res)




答案 2 :(得分:0)



var mdArr = [
  [2, 3, 5],
  [2, 3, 5],
  [2, 3, 7]
];


function checkDups(mdArr) {
  var arr = [];

  mdArr.forEach(function(el, i) {
    var arr_temp = el.filter(function(x) {
      var flag = true;
      if (arr.indexOf(x) != -1) return false;
      for (var j = 0; j < mdArr.length; j++)
        if (mdArr[j].indexOf(x) == -1) {
          flag = false;
          break;
        }

      return flag;

    });
    arr = arr.concat(arr_temp);
  });

  return arr;

}

alert(checkDups(mdArr));
&#13;
&#13;
&#13;