这个想法是它查看一个未指定数量的数组(自己保存在数组中),并搜索每个数组中的相似值。我已经尝试了一下,但我无法想到任何数量的for循环或临时数组来保存价值来解决我的问题。
示例:
[[2,3,5]
[2,3,5]
[2,3,7]]
这个2D数组是它将被使用的一个例子,代码应该给出的返回值是:
2,3
因为这些数字出现在所有3个案例中,同样会在未指定数量的阵列上使用,但由于我还没有做过任何事情,我不知道从哪里开始。
我很抱歉我无法提供任何尝试过的代码,但我必须构建一些嵌套的for循环,然后坐着看着它想知道要写什么...
答案 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;