JSでは複数の配列を結合し、配列の重複要素を除去します.

1614 ワード

昨夜書いたデモさんは、伝来した複数の配列を統合する方法を書いて、重複要素を除去して、具体的に次のように実現しました.
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]]));
複数の配列が入ってくるので、2次元配列に入ることができ、配列のreduce方法を使用して、配列内のネストされた配列を逐次結合することができる.
配列の重さについて、以下の4つをまとめました.
  • は、元の配列に戻らなければならないことを要求しています.配列を循環してもいいです.現在の下付き要素と現在の要素が配列の中のlastIndexと異なる場合、この要素を削除します.コードは以下の通りです.
    arr.forEach((item,index) => {
        if(index != arr.lastIndexOf(item)){
            arr.splice(index,1);
        }
    })
    
  • は新しい配列に戻ることを要求し、元の配列を循環させ、現在の要素が新しい配列に存在しない場合(すなわちindexは−1)を判断し、pushを新しい配列に進める、すなわちdemoの書き方を定義することができる.
  • は、新しい配列に戻ることを要求しています.一番簡単なのは、配列のfilter方法を使用して、現在の下付き要素と配列の中のlastIndexと同じ要素をフィルタリングし、具体的には以下のように実現されています.
    function removeSame(arr) {
        return arr.filter((item,index) => 
        index ===arr.lastIndexOf(item));
    }
    
    注:ES 6を使用すると、=>の後に語句が一つしかない場合は、{ }およびreturnを省略することができます.
  • は、新しい配列に戻ることを要求し、重いときは重複要素を削除すること、すなわち[1,2,2,3]を入力し、[1,3]を返すならば、配列のfilter方法を利用して、現在の要素のindexとlastIndexと同じ(第3項とは異なる)要素を選別して、具体的には以下のように実現することができる.
    function removeSame(arr) {
        return arr.filter((item) =>
        arr.indexOf(item) === arr.lastIndexOf(item));
    }
    
    思い付くことができるのはしばらくこれらで、補充を歓迎して、私はMiss_です.cheng