从javascript中的两个不同数组中获取唯一项
我有两个数组从javascript中的两个不同数组中获取唯一项,javascript,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(
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;
}
函数diffArray(arr1、arr2){
var newArr=[];
var newArr2=[];
newArr=arr1.滤波器(函数(e){
返回arr2.indexOf(e)<0;
});
newArr2=arr2.filter(函数(e){
返回arr1.indexOf(e)<0;
});
var arr=新arr.concat(新ARR2);
返回arr;
}
是否有更好的方法来获得相同的结果。您可以检查项目的索引和最后一个索引,并仅在索引相同时进行筛选
var a=[4,8,9,7],
b=[1,5,7,3,9],
unique=a.concat(b).过滤器((v,uu,a)=>a.indexOf(v)==a.lastIndexOf(v));
console.log(唯一)代码>我可以这样做
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);
可能重复的,所以你想要对称的差异?在两个数组上循环,将数组值作为键分配给值为1
的对象,如果该键已经存在,则将该值设置为0
,然后仅获取值为1
的键(使用object.entries
和过滤器
)。可能重复@KhánhBùiĐứ不,这不是关于这里需要的对称差。我在Codewars中看到过这个问题。comBut为什么这样更好?不,先生,Nina Scholz的答案是最好的。你可以去看看