【FCC】Symmetric Difference对等差分
題目:
創建一個函數,接受兩個或多個數組,返回所給數組的 對等差分(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}).
結果:
sym([1, 2, 3], [5, 2, 1, 4]) 應該返回 [3, 4, 5].
sym([1, 2, 3], [5, 2, 1, 4]) 應該只包含三個元素.
sym([1, 2, 5], [2, 3, 5], [3, 4, 5]) 應該返回 [1, 4, 5]
sym([1, 2, 5], [2, 3, 5], [3, 4, 5]) 應該只包含三個元素.
sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]) 應該返回 [1, 4, 5].
sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]) 應該只包含三個元素.
sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3]) 應該返回 [2, 3, 4, 6, 7].
sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3]) 應該只包含五個元素.
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].
sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3], [5, 3, 9, 8], [1]) 應該只包含八個元素.
【代碼】
<script type="text/javascript">
function sym(args) {
//將參數合并成一個數組
// var arr=Array.prototype.slice.call(arguments);
//也可以使用push方法合并參數為數組
var arr = [];
for (var i = 0; i < arguments.length; i++) {
arr.push(arguments[i]);
}
console.log('arr:' + arr);
var temp = arr.reduce(function(prev, cur) {
var a = prev.filter(function(val) {
return cur.indexOf(val) == -1;
});
var b = cur.filter(function(val) {
return prev.indexOf(val) == -1;
});
return a.concat(b);
});
//最后把得到的數組去重,利用fifter方法,函數出現的位置和索引相同時保留達到剔除重復數字的作用。
return temp.filter(function(val, index, arr) {
return arr.indexOf(val) == index;
});
}
</script>
總結
以上是生活随笔為你收集整理的【FCC】Symmetric Difference对等差分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FCC】Validate US Tel
- 下一篇: 【FCC】Exact Change 收银