从两个数组中获取唯一值并将它们放在另一个数组中

san*_*a26 24 javascript arrays

我在javascript中有两个数组 - :

var array1 = ['12','1','10','19','100'];
var array2 = ['12','10','19'];
Run Code Online (Sandbox Code Playgroud)

我需要一个方法来从两个数组中获取唯一性并将它们放在array3中 Array3应该是 - :

var array3 = ['1','100'];
Run Code Online (Sandbox Code Playgroud)

感谢帮助.

Bar*_*art 35

var array3 = array1.filter(function(obj) { return array2.indexOf(obj) == -1; });
Run Code Online (Sandbox Code Playgroud)

阵列#过滤器上的MDN:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/filter

包含旧版浏览器的polyfill.

  • 如果array2中有任何值在array1中不存在,那么它将不会显示.例如var array1 = [1,3,5,7,9]; var array2 = [1,2,3,5,100]; 将导致[7,9]而不是[2,7,9,100] (15认同)
  • 你需要检查相反的方式.这个答案是不正确的. (14认同)
  • 这会导致 o(n^2) 复杂度,在处理大型数组时会变得非常慢。 (2认同)

Hed*_*ith 13

有了一点ES6魔力,它可以相当简洁.请注意,我们需要检查两种方式,因为两个数组中都有唯一的项目.

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [1, 3, 8];

let unique1 = arr1.filter((o) => arr2.indexOf(o) === -1);
let unique2 = arr2.filter((o) => arr1.indexOf(o) === -1);

const unique = unique1.concat(unique2);

console.log(unique);
// >> [2, 4, 5, 8]
Run Code Online (Sandbox Code Playgroud)


Lem*_*ool 7

var unique = [];
for(var i = 0; i < array1.length; i++){
    var found = false;

    for(var j = 0; j < array2.length; j++){ // j < is missed;
     if(array1[i] == array2[j]){
      found = true;
      break; 
    }
   }
   if(found == false){
   unique.push(array1[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)