一般的な配列の重複排除方法

フィルタの方法()+のindexOf()  

 

@ アイデア:重複する要素を除外するメインフィルタ()メソッドの使用は、
機能ArrayToHeavy(ARR){
     // 元の配列内の重複数をフィルタリング、新しいアレイ返さ
    戻り arr.filter((項目、インデックス)=> {
         // 、数字配列のインデックスと比較して、配列番号が最初に現れるインデックスを反復
        // の最初の発生事実である
        リターン arr.indexOf(項目)は=== インデックス
    })
} 
ARRを聞かせ = [1,21,2,24,3,3,7,4,4,5,5 ] 
はconsole.log(ArrayToHeavy(ARR))
// 印刷は1、21、2、24、3、7、 4、5

 

 

 

 

 


方法2つのプッシュ()+のindexOf()

@ アイデア:主に渡された配列値が新しい配列中に存在するか否かを決定するのindexOf()メソッドを使用して、新しい配列プッシュ入れ伝統的な値が存在しない
関数ArrayToHeavy(ARR)は{
     // 空の配列を作成 
    newArr =を聞かせて[ ];
     のためのVAR ; Iはarr.lengthを<; I = 0 Iは++ ){
         // 反復配列は新しい配列配列の着信値があるかどうかを見つけるために、渡された
         場合(newArr.indexOf(ARR [I])== = -1 ){
              // 置く新しい値をプッシュするために存在しない配列
            newArr.push(ARR [I]); 
         } 
    } 
    // 新しい配列を返す
    戻りnewArrを; 
} 
LETをA = [1,1,2,3-、 4,5,6,4,6,8,65,77 ]; 
はconsole.log(ArrayToHeavy(A)); 
//印刷は[1、2、3、4、5、6、8、65、77] 


// ******************************************************** ************************************************** ** // 


// アイデア:添字の最初の出現に渡された配列の値を見つけるためのindexOf()メソッドの主に使用、番号を見つけるために、添え字の使用は、最初に出現したものを見つけ、新しいにそれをプッシュしますアレイ
機能ArrayToHeavy(ARR)は{
     // 空の配列を作成し 
    てみましょうnewArr = [];
     のためのVARの I = 0; I <arr.length; I ++は){
         // 反復配列が渡され、受信ルックアップ・アレイの値添字の発生
         IF(arr.indexOf(ARR [I])=== I){
              // プッシュ発生入力デジタルアレイ
            newArr.push(ARR [I]); 
         } 
    } 
    // 新たを返します配列
    リターン 
のlet A newArr。
}= [1,1,2,3,4,5,6,4,6,8,65,77 ]。
console.log(ArrayToHeavy(a)参照)。

 

 


 

3つの二重ループ+スプライスするための方法()または  ループ+ダブル プッシュ()

 

@ アイデア:ダブルループを使用するためには、その後、要素を見つけるの重複削除するには、スプライス()メソッドを使用するように繰り返される
関数ArrayToHeavy(ARR){
     // 全ての要素反復処理
    のためのvar = ARR lenはI = 0を、。長さ、IはLEN <; Iは++ ){
         ためVARの V = I + 1; V <LEN; V ++ ){
             // 重複する要素を確認し
            た場合(ARR [I] === ARR [V]){
                 // が、それはアレイから取り除かれる 
                arr.splice(V ,. 1 );
                 // スプライス方法は、配列の長さを変化させ、したがって、アレイ長さlenマイナス1つの添字のVに 
                len-- ; 
                V - ; 
            }  
        }
    }
    戻りARR 
} 
LETをA = [2,4,5,7,4,8,0,4,5,7,9,4,5,21 ]; 
はconsole.log(ArrayToHeavy(A)); 
// プリント[2、4、5、7、8、0、9、21] 



// ******************************* ************************************************** *********** 

// 二重ループを使用する場合、外側のループは、ループを繰り返し配列に新しい値を取得しない上部ループに内部ループを繰り返し用いて検出されると同時に終了する。思考決意の
関数ArrayToHeavy(ARR){ 
    せNEWARRAY = [];
     // すべての要素を反復処理
    するためのVARの I = 0、LEN = arr.length; IがLEN <; I ++は){
         VARの V = I + 。1; V <LEN; V ++ ){
            //はとき同時に決定におけるトップループ素子への電流のサイクルの終了が繰り返される検出
            IF(ARR [I] === ARR [V]){ 
                私は ++ ; 
                Vは = I; 
            } 
        } 
        //は省略する取得します新しい配列に値
        newArray.push(ARR [I])を   
    } 
    戻りNEWARRAYを
} 
LETをA = [2,4,5,7,4,8,0,4,5,7,9,4,5、 21 ]; 
はconsole.log(ArrayToHeavy(A)); 
// プリント[2、8、0、7、9、4、5、21]

 

 


 

おすすめ

転載: www.cnblogs.com/r-mp/p/11318164.html