JS中合并多個數(shù)組,且去除數(shù)組重復元素


昨晚寫的小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ù)組內嵌套的數(shù)組依次合并;

關于數(shù)組去重,我總結了以下四種:

  1. 要求必須返回原數(shù)組,可以對該數(shù)組進行循環(huán),如果當前下標和當前元素在數(shù)組中的lastIndex不同,則刪除這個元素,代碼如下:
arr.forEach((item,index) => {
    if(index != arr.lastIndexOf(item)){
        arr.splice(index,1);
    }
})
  1. 要求返回新數(shù)組,可以定義一個新數(shù)組,對原數(shù)組進行循環(huán),判斷如果當前元素在新數(shù)組中不存在(即index為-1),將其push進新數(shù)組,也就是demo中的寫法。

  2. 要求返回新數(shù)組,最簡單的應該是使用數(shù)組的filter方法,將當前下標和當前元素在數(shù)組中的lastIndex相同的元素篩選出來,具體實現(xiàn)如下:

function removeSame(arr) {
    return arr.filter((item,index) => 
    index ===arr.lastIndexOf(item));
}

注:使用ES6時當=>后面只有一條語句可以省略{ }return

  1. 要求返回新數(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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 由于最近都在freecodecamp上刷代碼,運用了很多JavaScript數(shù)組的方法,因此做了一份關于JavaS...
    2bc5f46e925b閱讀 2,172評論 0 16
  • 數(shù)組的定義 數(shù)組是按序號排列的一組值,每個值的位置都有編號(從0開始)。數(shù)組本質上是一種特殊的對象。它的鍵名是按(...
    Allin_Lin閱讀 672評論 0 0
  • js基礎篇(三)——DOM的各種操作js基礎篇(二)——字符串的各種操作 1. 創(chuàng)建數(shù)組 創(chuàng)建一個數(shù)組,有三種方法...
    hanyuntao閱讀 1,722評論 0 14
  • 此文章用于歸納Array的所有方法 在JavaScript中,除了Object,用得最多的可能就是數(shù)組Array了...
    moonburn閱讀 344評論 1 3
  • 至去年離職整整一年多了,從開始的彷徨到慢慢習慣,到現(xiàn)在現(xiàn)在的這種享受轉變太大了,連自己都不太相信,甚至有時感嘆前面...
    紅豬豬閱讀 469評論 2 3

友情鏈接更多精彩內容