创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△
or ⊕
)数组.
给出两个集合 (如集合 A = {1, 2, 3}
和集合 B = {2, 3, 4}
), 而数学术语 "对等差分" 的集合就是指由所有只在两个集合其中之一的元素组成的集合(A △ B = C = {1, 4}
). 对于传入的额外集合 (如 D = {2, 3}
), 你应该安装前面原则求前两个集合的结果与新集合的对等差分集合 (C △ D = {1, 4} △ {2, 3} = {1, 2, 3, 4}
).
循环剃去当前集合与下个集合中重复的部分
代码:
function sym(args) {
for(var i in arguments)arguments[i]=arguments[i].filter((val,index,array)=>array.indexOf(val)==index);//变量内容过滤去重
var newarr=args.join('');//赋值第一个数组给newarr,并将其转化为字符串,便于使用字符串方法
for(var i=1;i<arguments.length;i++){
var arr=arguments[i];
arr.forEach(function(val){//完成替换工作
if(!newarr.match(val))newarr+=val;
else newarr=newarr.replace(val,'');
});
}
newarr=newarr.split('').sort((a,b)=>a-b);
newarr.forEach(function(val,index){
newarr[index]=parseInt(val);
});
return newarr;
}
sym([1, 2, 3], [5, 2, 1, 4]);