昨晚寫的小demo骗炉,寫一個方法合并傳入的多個數(shù)組照宝,并去除重復元素,具體實現(xiàn)如下:
function merge(bigArray) {
let array = [];
const middeleArray = bigArray.reduce((a,b) => {
return a.concat(b);
});
middeleArray.forEach((arrItem) => {
if(array.indexOf(arrItem) == -1){
array.push(arrItem);
}
});
return array;
}
console.log(merge([[4,5],[1,1],[2,3],[4,2,3]]));
因為要傳入多個數(shù)組句葵,所以可以傳入二維數(shù)組的厕鹃,這樣一來可以使用數(shù)組的reduce
方法將數(shù)組內(nèi)嵌套的數(shù)組依次合并;
關(guān)于數(shù)組去重乍丈,我總結(jié)了以下四種:
- 要求必須返回原數(shù)組剂碴,可以對該數(shù)組進行循環(huán),如果當前下標和當前元素在數(shù)組中的lastIndex不同轻专,則刪除這個元素忆矛,代碼如下:
arr.forEach((item,index) => {
if(index != arr.lastIndexOf(item)){
arr.splice(index,1);
}
})
要求返回新數(shù)組,可以定義一個新數(shù)組请垛,對原數(shù)組進行循環(huán)催训,判斷如果當前元素在新數(shù)組中不存在(即index為-1),將其
push
進新數(shù)組宗收,也就是demo中的寫法漫拭。要求返回新數(shù)組,最簡單的應(yīng)該是使用數(shù)組的
filter
方法混稽,將當前下標和當前元素在數(shù)組中的lastIndex相同的元素篩選出來采驻,具體實現(xiàn)如下:
function removeSame(arr) {
return arr.filter((item,index) =>
index ===arr.lastIndexOf(item));
}
注:使用ES6時當=>
后面只有一條語句可以省略{ }
和return
- 要求返回新數(shù)組,且要求在去重時將重復元素刪掉匈勋,也就是說礼旅,輸入[1,2,2,3],要返回[1,3],就可以利用數(shù)組的
filter
方法颓影,將當前元素的index和lastIndex相同(注意比較與第3項的不同)的元素篩選出來各淀,具體實現(xiàn)如下:
function removeSame(arr) {
return arr.filter((item) =>
arr.indexOf(item) === arr.lastIndexOf(item));
}
能想到的暫時就是這些,歡迎補充诡挂,我是Miss_cheng