題目
比較兩個數組,然后返回一個新數組,該數組的元素為兩個給定數組中所有獨有的數組元素。換言之,返回兩個數組的差異。
如果你被難住了,記得使用 Read-Search-Ask嘗試與他人結伴編程、編寫你自己的代碼。
這是一些對你有幫助的資源:
Comparison Operators
Array.slice()
Array.filter()
Array.indexOf()
Array.concat()
function diff(arr1, arr2) {
var newArr = []; // Same, same; but different.
return newArr;
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
思路
- 定義2個變量,分別存數組1的差異值,數組2的差異值;
- 將2個變量合并;
- 貌似題目給的5個函數有的用不上了;
解答
function diff(arr1, arr2) {
var sm1=arr1.filter(function(v){
return arr2.indexOf(v) === -1;
});
var sm2=arr2.filter(function(v){
return arr1.indexOf(v) === -1;
});
return sm1.concat(sm2);
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
后來發現,其實不用定義數組,直接可以將兩個互相不存在的結果 用contact連起來,修改代碼如下:
function diff(arr1, arr2) {
arr1.filter(function(v){
return arr2.indexOf(v) == -1;
}).concat(arr2.filter(function(v){
return arr1.indexOf(v) == -1;
}));
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);