いくつかの基本的な配列の重複除外

1.二重ループのための基本と、次に再スプライスに
機能UNIQUE(ARR){
ための(I = 0 VAR; I <arr.length; I ++){
ため(VAR = I + J. 1; J <arr.length; J ++) {
IF(ARR [I] == ARR [J]){//は、第一、第二に相当し、スプライスは、第2の方法削除
arr.splice(J ,. 1);
J ,; //保存保存理由?元の配列のスプライスの長さを除去し、jは低下例がある場合:ARR = [1,2,3,3,3,4] [1,2,3,3,4]のようなコンソール
}
}
}
戻り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 3を、NaN 3を、 "のNaN 3"に、 "A"、。 {...}、{...}] //のNaN {}および重に、2つのヌルを直接消えません

2.のindexOf重複排除
機能UNIQUE(ARR){
IF {(Array.isArray(ARR)!)
はconsole.log( 'エラータイプ!')
戻り
}
VARアレイ= [];
(VARのために私は= 0; I < arr.length; I ++){
//は、配列内の最初に出現するか否かを判断する
場合には(アレイ.indexOf(ARR [I])=== -1){
アレイ.push(ARR [I])
}
}
戻り値のアレイ;
}
VaRのARR = [1,1、 '真 '、 '真'、真の、真、15,15、偽、偽、不定、不定、NULL、NULLは、NaN、NaNで、 'のNaN'、0、0、A」 '' A」、{}、{}];
はconsole.log(UNIQUE(ARR))
// [1、 "真の"、trueに、15、falseに、未定義、ヌル、NaN 3を、NaN 3を、 "NaN 3を" 0。 、 ""、{...} 、{...}] // NaNは、{} 重いを行っていません

3.利用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、 ""、{}、{}]

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

再帰
関数UNIQUE(ARR){
VARアレイ= ARR;
; VAR = LEN BE Array.lengthと
(やすい関数(A、B){//ソート重量のArray.sort
A返す- Bを;
})
関数ループ(索引){
IF(インデックス> = 1){
IF(配列[インデックス] ===配列[。index- 1]){
Array.splice(インデックス,. 1);
}
ループ(インデックス- 1); //再帰ループそしてその後、再配列を
}
}
ループ(-len 1);
戻り配列;
}
15、15、真の真に、 '真の'真の'VARのARR = [1,1、、、、falseに、falseに、不定、不定NULL、NULL、のNaN 3、NaN 3を、 'のNaN 3'、0、0、 'A'、 'A'、{}、{}];
はconsole.log(UNIQUE(ARR))
// [1、 "A"、 "。真の"真、15、偽 、1、{...}、ヌルは、NaN、NaNに、" NaNに"0、"」、{...}、不定]

前記重みにマップデータ構造の使用
関数arrayNonRepeatfy(ARR){
ましょう新しい新しい地図地図=();
せて配列array =新しい新しい();結果を戻すため//アレイ
I(I = 0せための <arr.lengthは; I ++){
IF(地図.has(ARR [I])){//もしキー値
マップ.SET(ARR [I]、真の);
}他{
falseにマップ.SET(ARR [I]、) ; //キー値がない場合に
アレイ.push(ARR [I]);
}
}
戻り配列;
}
VARのARR = [1,1、 '真の'、 '真の'真の、真の、15、15、falseに、偽、不定、不定、NULL、NULLに、NaN 3を、NaN 3を、 'のNaN 3'、0、0、 'A'、 'A'、{}、{}];
はconsole.log(UNIQUE
[1、 "A"、 "。真の"真、15、偽 、1、{...}、ヌルは、NaN、NaNに、" NaNに"0、"」、{...}、不定]

おすすめ

転載: www.cnblogs.com/lihemengbky/p/12550153.html