JavaScript配列は、再共通するいくつかの方法があります

私は最近、誰もがいくつかの方法を使用するために言って、今具体的には、頭痛を-行う再に配列をインタビューを受けました。

まず、使用ES6セットの重複排除(ES6が最も一般的に使用されます)

関数固有の(ARR){
   リターン Array.from(新しいセット(ARR))
} 
VAR ARR = [1,1、 '真'、 '真の' 真の真の、15,15、、不定、不定NULLNULLは、NaN、NaNで、 'のNaN'、0、0、 ''、 '' 、{}、{}]。
console.log(ユニーク(ARR))
 // [1、 "真"、真、15、偽、不定、ヌルは、NaN、 "NaNに"、0、 ""、{}、{}]

最小重量に、このメソッドのコードの互換性を考慮していません。

第二に、営巣のため、その後、再スプライスに使用するため(最も一般的に使用されるES5)

関数UNIQUE(ARR){            
         ためVAR I = 0、I <arr.length; I ++ ){
             ためVAR J = I + 1、。J <arr.length; J ++ ){
                 IF(ARR [I] == ARR [ J]){          // 第二に第1の等価、スプライスは、第2の方法削除 
                    arr.splice(J ,. 1 ); 
                    J - ; 
                } 
            } 
        } 
戻りARR; 
} 
VARの ARR = [1,1、 '真の''「真の、本当の真の、15、15、falseにfalseに、不定、不定、NULLNULL、のNaN 3、NaN 3を、 'のNaN 3'、0、0、 'A'、 'A' 、{}、{}]; 
    はconsole.log(UNIQUE(ARR))
    // [1、偽、15、 "真" 、未定義は、NaN、NaNに、 "NaNに" ""、{...}、{...}] //のNaN {}および重に、2つのヌルを直接消えません

二重ループは、外側ループ素子、インナーループ比較値。値が同じで、この値が省略されています。

第三に、使用することは、(ES6メソッド)が含まれ

関数固有の(ARR){
     場合(!Array.isArray(ARR)){ 
        にconsole.log( 'タイプのエラー!' リターン
    } 
    VARの配列= [];
    ためVAR iが= 0; I <arr.length; I ++ ){
             場合(array.includes(ARR [I])!){ //含む检测数组是否有某个值
                     のArray.push(ARR [I])。
              } 
    } 
    戻りアレイ
} 
VAR ARR = [1,1、 '真'、 '真'、真の真の、15,15、、不定、不定、NULLNULLは、NaN、NaNで、 'のNaN'、0、0、 ''、 '' 、{}、{}]。
    console.log(ユニーク(ARR))
    // [1、 "真"、真、15、偽、不定、ヌルは、NaN、 "NaNに"、0、 ""、{...}、{...}] // {}没有去重

第四に、使用するソート()

機能のユニークな(ARR){
     場合(!Array.isArray(ARR)){ 
        はconsole.log( '!タイプエラー' のリターン; 
    } 
    ARR = arr.sort()
     VAR arrry = [ARR [0 ]]。
    ためVAR I 1 =; I <arr.length; I ++ ){
         場合(ARR [I] == ARR [I-1!]){ 
            arrry.push(ARR [I])。
        } 
    } 
    戻りarrry。
} 
     VAR ARR = [1,1、 '真'、 '真の' 真の真の、15,15、、不定、不定、NULLNULLは、NaN、NaNで、 'のNaN'、0、0、 ''、 '' 、{}、{}]。
        console.log(ユニーク(ARR))
// [0、1、15、 "NaNの"は、NaN、NaNで、{...}、{...}、 ""、偽、ヌル、真、 "真"、不定] // NaNで、{}没有去重

ソート()ソート方法を使用して、その後、隣接ソートの結果に応じて元素比を横切ります。

 

第五に、フィルタの使用

関数UNIQUE(ARR){
   戻り arr.filter(関数(項目、指標、ARR){
     // 現在の要素、現在のインデックス値==元の配列の最初のインデックス、そうでなければ現在の要素
    戻り arr.indexOf(項目、0)=== 指数; 
  }); 
} 
    VARの ARR = [1,1、 '真の'、 '真の' 真の真の、15、15、falseにfalseに、不定、不定、NULLNULL、NaN 3を、 NaN 3を、 'のNaN 3'、0、0、 'A'、 'A' 、{}、{}]は、
        はconsole.log(UNIQUE(ARR))
// [1、 "真の"、trueに、15、falseに、未定義。 、NULL、 "NaNの" 0 、 ""、{...}、{...}]

 

おすすめ

転載: www.cnblogs.com/Ky-Thompson23/p/12631788.html