原题目链接:https://www.w3cschool.cn/codecamp/symmetric-difference.html
题目:
创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(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) {
var result = [];
for(var i = 0; i < arguments.length; i++){
var aiTemp = arguments[i];
var ai = [];
// 对数组进行去重操作,去重是为了在不影响结果的前提下,更直接地进行删除操作
for (var g = 0; g < aiTemp.length; g++){
if(!ai.includes(aiTemp[g])){
ai.push(aiTemp[g]);
}
}
for(var k = 0; k < ai.length; k++){
var aik = ai[k];
if(result.includes(aik)){
/*
删除result与输入数组中相同的元素,如果没有去重,
会导致数组中一旦有偶数个相同元素时,会出现先删除后添加的错误
*/
for(var v = 0; v < result.length; v++){
if(result[v] == aik){
result.splice(v,1);
break;
}
}
}
else{
result.push(aik);
}
}
}
return result;
}
点击进入我的主页,了解更多相关内容:https://blog.csdn.net/qq_29750277