要求
創(chuàng)建一個函數(shù)晌涕,接受兩個或多個數(shù)組较雕,返回所給數(shù)組的對等差分(symmetric difference)(△or⊕)數(shù)組.
例如:
sym([1, 2, 3], [5, 2, 1, 4])應該返回[3, 4, 5].
sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5])應該返回[1, 4, 5].
分析
1.function sym(args)只獲取參數(shù)中的第一個數(shù)組挥转。个少。踏揣。
2.[1, 1, 2, 5]當做[1, 2, 5]算,因此需要一個去重函數(shù)狂塘;
3.檢查后一個數(shù)組里的元素若出現(xiàn)在前一個數(shù)組录煤,則移除前一個數(shù)組的元素,否則荞胡,添加至前一個數(shù)組妈踊。
解決
改進
```function sym(args){
var a=Array.from(arguments);
a=a.reduce(function(prev, curv, index, array){
var a = prev.filter(function(item){
return curv.indexOf(item) < 0;
});
var b = curv.filter(function(item){
return prev.indexOf(item) < 0;
});
return a.concat(b);
});
return a.filter(function(item,index,array){
return array.indexOf(item) == index;
});
}```
測試
sym([1, 2, 3], [5, 2, 1, 4])應該返回[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], [5, 3, 9, 8], [1])應該只包含八個元素.