gpt4 book ai didi

javascript - 数组之间的对称差异

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:49 29 4
gpt4 key购买 nike

<分区>

我一直在编写代码以在一个或多个数组之间进行对称差异。如您所知,对称差异是关于排除两组数据中的元素。更多信息:https://en.wikipedia.org/wiki/Symmetric_difference

这是我的代码:

  //This function drops any repeated element from a vector
function unify(arr){
var result=arr.reduce(function(vector,num,index,self){
var len=self.filter(function (val){
return val===num;
}).length;
if (len>1){
var pos=self.indexOf(num);
self.splice(pos,1);
}
vector=self;
return vector;
},[]);

return result;
}

function sym(args) {
var arg = Array.prototype.slice.call(arguments);
var compact= arg.map(function(vector){
return unify(vector);
});

//We compare the vectors and delete any repeated element before we concat them
return compact.reduce(function(prev,next,index,self){
for (var key in next) {
var entry=next[key];
var pos=prev.indexOf(entry);
if (pos!==-1){
prev.splice(pos,1);
next.splice(key,1);
}

}
return prev.concat(next);
});

}

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

我不明白我做错了什么。我希望得到 [3,4,5] 的结果,但这不是我得到的结果。

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