建立一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△
or ⊕
)数组.javascript
给出两个集合 (如集合 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}
).java
思路:git
1.用arguments取出全部数组并去重。github
2.用循环遍历前一个数组,若是在后一个数组中找到相同参数,就在后一个数组中删掉这个参数,没找到就添加到后一个数组,返回后一个数组,重复这样的操做。数组
3.最后返回最后一个数组便可。app
function sym() { let arr = []; for(let v of arguments){ arr.push([...new Set(v)]); } arr.reduce((a,b) => { a.forEach(v => b.indexOf(v) === -1 ? b.push(v) : b.splice(b.indexOf(v),1)); return b; }); return arr[arr.length - 1]; } sym([1, 2, 2, 3], [5, 2, 1, 4]);
若是有不明白的地方请留言,若是有更好更简便更优化的方法请留言,谢谢。函数
更多内容请访问个人我的博客: Bblog优化