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

Javascript comparing multiple arrays to get unique value across all

本文关键字:数组 唯一 比较 Javascript      更新时间:2023-09-26

我有以下数组:

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

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

因此,在这种情况下,返回

[3]

有什么建议吗?

非常感谢:)

array[0]的值存储在一个变量中(我们称之为result)。

array[1]循环到结束。在这个循环中,运行result的所有值。如果result的当前值不在array[x]中,则从result中移除该值。

在循环结束时,result只包含所需的值。

除了明显的"迭代每个数组并在其他每个数组中找到匹配的数字"之外,您还可以对原始数组进行扁平化(concat)、排序,然后查找出现在四个连续索引处的数字。我不喜欢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));

在学习后,我使用了错误的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)
                }
            };
        };

试试这个:

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]

工作演示