gpt4 book ai didi

javascript - 在数组测试中查找对称差异失败

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:22 25 4
gpt4 key购买 nike

sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]) 应返回 [1, 4, 5]预期返回如上所示。但我找不到它失败的原因。下面的代码需要什么样的修复?

function sym(args) {
//debugger;
var arr=Array.from(arguments);
var resArr=[];

arr.forEach(function(arrVal){
var c=0;

arrVal.forEach(function(val,index){
console.log("arrVal",arrVal,"index",index,"val",val,"|",arrVal.slice(index+1-c));
if(index<arrVal.length-1 && arrVal.slice(index+1-c).indexOf(val)!==-1){
console.log("here");

arrVal.splice(index-c,1);
c++;
}
console.log("arrVal",arrVal,"index",index,"|",arrVal);

});

resArr.push(arrVal);
});
console.log(resArr);

resArr=resArr.reduce(function(acc,curr){
return acc.concat(curr.filter(function(val){
var notContains=acc.indexOf(val)==-1;
if(!notContains)
acc.splice(acc.indexOf(val),1);
return notContains;
}));
},[]);


console.log(resArr);
return resArr;
}

sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]);

最佳答案

您可以使用更简洁的版本来过滤重复项。

function sym(array) {
return array.reduce(function (r, a) {
return r.concat(a.filter(function (a, i, aa) {
return i === aa.indexOf(a);
})).filter(function (a, i, aa) {
return aa.indexOf(a) === aa.lastIndexOf(a);
});
}, []);
}

console.log(sym([[1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]])); // [1, 4, 5]

关于javascript - 在数组测试中查找对称差异失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43079558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com