给出两个集合(如集合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() {
//不造有几个参数,所以就先轮出来
var args = [];
for(var i=0;i<arguments.length;i++){
args.push(arguments[i]);
}
//函数:你没有的,result没有的,都插入result
function diff(aOne,aTwo){
var result = [];
aOne.forEach(function(i){
if(aTwo.indexOf(i)<0&&result.indexOf(i)<0){
result.push(i);
}
});
aTwo.forEach(function(i){
if(aOne.indexOf(i)<0&&result.indexOf(i)<0){
result.push(i);
}
});
return result;
}
//reduce该数组,并排序
return args.reduce(diff).sort();
}
验算:
sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3], [5, 3, 9, 8], [1]);
//[ 1, 2, 4, 5, 6, 7, 8, 9 ]
THE END.
网友评论