我有两个数组
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;
}
有没有更好的方法来获得相同的结果。
答案 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)
尝试以下方法:
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;