建立一個函數,接受兩個或多個數組,返回所給數組的 對等差分(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優化