ホームページ  >  記事  >  バックエンド開発  >  Javascript 配列から重複を削除するいくつかの方法

Javascript 配列から重複を削除するいくつかの方法

巴扎黑
巴扎黑オリジナル
2016-11-21 15:15:15807ブラウズ

実装アイデア: 新しい配列を作成し、受信配列を走査し、値が新しい配列にない場合は値を追加します。 注: 値が配列内にあるかどうかを判断するメソッド「indexOf」は、ECMAScript5 メソッドです。 IE8 以前ではサポートされていません。下位バージョンのブラウザと互換性のあるコードを作成する必要があります:

//最も単純な配列の重複排除方法
function unique1(array){
var n = []; new 一時配列
//現在の配列を走査します
for (var i = 0; i //現在の配列の i 番目の項目が一時配列に保存されている場合はスキップしますit,
//それ以外の場合は、現在の項目を一時配列にプッシュします
if (n.indexOf(array[i]) == -1) n.push(array[i]);
}
return n;
}

オブジェクトのキーと値のペアのメソッド

実装のアイデア: 新しい js オブジェクトと新しい配列を作成します。受信した配列を走査するときに、値が js オブジェクトのキーであるかどうかを判断します。そうでない場合は、キーを追加します。オブジェクトに追加し、それを新しい配列に入れます。注: js オブジェクト キーであるかどうかを判断する際、受信キーに対して "toString()" が自動的に実行されます。たとえば、a[1]、a["1"] などです。上記の問題を解決するには、やはり「indexOf」を呼び出す必要があります。

// 最も速く、最も多くのスペースを占有します (スペースは時間と交換されます)
function unique2(array){
var n = {}, r = [], len = array.length, val, type;
for (var i = 0; i val = array[i];
type = typeof val;
if (!n[val]) {
n[val] = [type];
r.push(val); Return r ;
}


配列の添字判定方法

実装アイデア: 現在の配列の i 番目の項目が最初に現在の配列の i 以外の位置に出現する場合、それは意味します。 i 番目の項目は繰り返され、無視されます。それ以外の場合は、結果の配列を保存します。

function unique3(array){

var n = [array[0]]; //結果の配列

//2 番目の項目から開始してトラバースします

for(var i = 1; i // それは項目 i が繰り返され、それを無視することを意味します。それ以外の場合は、結果の配列を格納します if (array.indexOf(array[i]) == i) n.push(array[i]);

}
return n;
}


ソート後の隣接削除メソッド

実装のアイデア: ソート後に同じ値が隣接するように受信配列をソートし、トラバース時に前の値と重複しない値のみを新しい配列に追加します。

//同じ値を隣接し、重複する値を削除する
function unique4(array){

array.sort();

var re=[array[0]];

for(var i = 1 ; i if( array[i] !== re[re.length-1]) {

re.push(array[i]);
}
}
return re ;
}


配列トラバーサル手法の最適化

実装アイデア: 反復せずに右端の値を取得し、それを新しい配列に入れます。 (重複値が検出された場合、現在のループを終了し、次の最上位ループの判定に移ります)

// アイデア: 重複のない右端の値を取得し、新しい配列に入れます
function unique5(array){
var r = [];
for(var i = 0, l = array.length; i for(var j = i + 1; j if (array[i] === array[j]) j = ++i;
r.push(array[i] ] );
}
return r;
}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。