Javascript比较多个数组以获得所有的唯一值

时间:2015-11-04 15:21:48

标签: javascript arrays

我有以下数组:

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

我试图从所有数组中出现的数组中得到一组唯一的数字。

因此在这种情况下返回

[3]

有什么建议吗?

非常感谢:)

4 个答案:

答案 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]

Working Demo