この記事では主に JS 配列の重複排除方法の概要を紹介します。全部で 7 つの方法があります。皆さんのお役に立てれば幸いです。
最も簡単な方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var arr=[2,8,5,0,5,2,6,7,2]; } |
方法1:
二重層ループ、外側のループ要素、内側のループ中に値を比較
同じ値がある場合はスキップし、ない場合は配列にプッシュします
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
方法2: スプライスを使用して元の配列を直接操作します
二重層ループ、外側のループ要素、内側のループ中に値を比較します
値が同じ場合、値を削除します
注: 要素を削除した後、配列の長さを 1 減らす必要があります。
8
9
10
11
12
13
14
15
16
17
18
19
Array.prototype.distinct =
function
(){
var
arr =
this
,
i,
j,
len = arr.length;
for
(i = 0; i < len; i++){
for
(j = i + 1; j < len; j++){
if
(arr[i] == arr[j]){
arr.splice(j,1);
len--;
j--;
}
}
}
return
arr;
};
var
a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var
b = a.distinct();
console.log(b.toString());
//1,2,3,4,5,6,56
長所: シンプルで理解しやすい
短所: メモリ使用量が多く、速度が遅い
方法 3: 同じにすることができないオブジェクトのプロパティを使用して重複を排除します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
方法 4: 配列の再帰的重複排除
再帰的なアイデアを使用します
最初に並べ替えて、同じ場合は削除します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
方法 5: IndexOf と forEach を使用する
123456 789 10 11 12 13 14 15 |
|
方法 6: ES6 の set
Set を使用します。これは配列に似たデータ構造であり、そのメンバーの値はすべて一意です。
Set 構造体を配列に変換するには Array.from を使用します
1 2 3 4 |
|
スプレッド演算子 (...) は内部で for...of ループを使用します
1 2 3 |
|
以下は、配列をマージして重複を削除する方法の補足的な紹介です
1. concat() メソッド
アイデア: concat() メソッドは、受信した配列または非配列の値を、元の配列を作成して新しい配列を返します。このメソッドは新しい配列を生成します。
1 2 3 4 5 |
|
2. Array.prototype.push.apply()
アイデア: このメソッドの利点は、新しい配列を生成しないことです。
1 2 3 4 5 6 7 8 9 10 |
Array.prototype.push.apply(a, b);
| Sharingにおけるアレイ重複排除のデテールの例
以上がJS配列の重複排除方法の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。