私は最近、誰もがいくつかの方法を使用するために言って、今具体的には、頭痛を-行う再に配列をインタビューを受けました。
まず、使用ES6セットの重複排除(ES6が最も一般的に使用されます)
関数固有の(ARR){ リターン Array.from(新しいセット(ARR)) } VAR ARR = [1,1、 '真'、 '真の' 真の、真の、15,15、偽、偽、不定、不定NULL、NULLは、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に、不定、不定、NULL、NULL、の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、偽、偽、不定、不定、NULL、NULLは、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、偽、偽、不定、不定、NULL、NULLは、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に、不定、不定、NULL、NULL、NaN 3を、 NaN 3を、 'のNaN 3'、0、0、 'A'、 'A' 、{}、{}]は、 はconsole.log(UNIQUE(ARR)) // [1、 "真の"、trueに、15、falseに、未定義。 、NULL、 "NaNの" 0 、 ""、{...}、{...}]