在javascript中从两个不同的数组中获取唯一项

时间:2017-11-25 10:54:34

标签: javascript

我有两个数组

var a = [4,8,9,7];
var b = [1,5,7,3,9];

我想要结果

 [4,8,1,5,3]

我尝试过使用过滤器 -

function diffArray(arr1, arr2) {
var newArr = [];
var newArr2 = [];
newArr = arr1.filter(function(e) {
  return arr2.indexOf(e) < 0;
});

newArr2 = arr2.filter(function(e) {
  return arr1.indexOf(e) < 0;
});
var arr = newArr.concat(newArr2);
 return arr;
}

有没有更好的方法来获得相同的结果。

3 个答案:

答案 0 :(得分:3)

您可以检查项目的索引和最后一个索引,并仅在索引相同时进行过滤。

var a = [4, 8, 9, 7],
    b = [1, 5, 7, 3, 9],
    unique = a.concat(b).filter((v, _, a) => a.indexOf(v) === a.lastIndexOf(v));
    
console.log(unique);

答案 1 :(得分:1)

我可以这样做。

var a = [4, 8, 9, 7];
var b = [1, 5, 7, 3, 9];
var c = b.reduce((r, o) => {
if (r.indexOf(o) !== -1) {
    r.splice(r.indexOf(o), 1);
} else {
 r.push(o);
}
 return r;
}, a);
console.log(c);

答案 2 :(得分:0)

尝试以下方法:

&#13;
&#13;
var a = [4,8,9,7];
var b = [1,5,7,3,9];

let aTemp = a.filter(val => !b.includes(val));
let bTemp = b.filter(val => !a.includes(val));

let res = aTemp.concat(bTemp);
console.log(res);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;