我有以下数组:
var array = [
[1, 2, 3, 4, 5],
[2, 3],
[3, 4],
[3]
];
我试图从所有数组中出现的数组中得到一组唯一的数字。
因此在这种情况下返回
[3]
有什么建议吗?
非常感谢:)
答案 0 :(得分:1)
将array[0]
的值存储在变量中(让我们称之为result
)。
从array[1]
循环到结尾。
在此循环中,遍历result
的所有值。如果result
的当前值不在array[x]
中,请从result
中删除此值。
在循环结束时,result
仅包含所需的值。
答案 1 :(得分:1)
除了显而易见的"迭代每个数组并在每个其他数组中找到匹配的数字"你可以展平(连接)原始数组,对其进行排序,然后查找在四个连续索引处出现的数字。我并不喜欢OP没有表现出任何努力的问题,但这非常有趣,所以这里就是
array.reduce(function(prev, cur){
return prev.concat(cur);
})
.sort()
.filter(function(item, i, arr){
return arr[ i + array.length - 1 ] === item;
});
或ES2015:
array.reduce((prev, cur)=>prev.concat(cur))
.sort()
.filter((i, idx, arr)=>(arr[idx+array.length-1]===i));
答案 2 :(得分:0)
在学习之后我使用了错误的javascript方法从数组中删除(pop)以及更多修修补补。我得到了很多工作,非常感谢那些回复的人。
var array = [
[2, 3, 5, 1],
[3, 4, 2, 1],
[3, 2],
[3, 4, 2, 5]
];
var result = array[0]
for (var i = 1; i < array.length; i++) {
for (var j = 0; j < result.length; j++) {
var arrayQuery = $.inArray(result[j], array[i]);
if(arrayQuery == -1){
result.splice(j, 1)
}
};
};
答案 3 :(得分:0)
试试这个:
var array = [
[1, 2, 3, 4, 5],
[2, 3],
[3, 4],
[3]
];
var arr = [];
for(var x in array){
for(var y in array[x]){
if(arr.indexOf(array[x][y]) === -1){
arr.push(array[x][y]);
}
}
}
console.log(arr);
输出:
[1, 2, 3, 4, 5]