いくつかの方法2019年8月30日配列と比較直すのに必要な時間

<!DOCTYPE HTML>
<HTML LANG = "EN">
<HEAD>
<メタ文字コード= "UTF-8">
<タイトル>数组去重方法</ TITLE>
</ HEAD>
<BODY>
<スクリプト>


unique1関数(ARR){
//反復のARR
のための(VARのI = 0、R&LT = []; I <arr.length; Iは++){
//反復のR&LT
(VAR jに対する= 0; J <r.length。 ++ J){
//要素rはARRループ終了の要素を横切る電流に等しい場合
IF(R [J] == ARR [I]){
BREAK;
}
}
//最後現在のARRとトラバース見つからない場合同じ要素の要素は
(J == r.length){IF
//この要素に追加置く
R&LT [r.length] = ARR [I];
}
}
戻りR&LT;
}

 


unique2の関数(ARR){
//反復のARR
(VAR I = 0、ハッシュ= []は、R = [];私はarr.lengthを<; I ++の)のために{
//ハッシュ[I ARR配列に存在しない場合】基礎となる変数の
IF(ハッシュ[ARR [I]] ===未定義){
//最終的な配列に、この値は
R&LT [r.length] = ARR [I];
//及び次のように、この値ハッシュテーブルアレイ装置へのカスタム値
ハッシュ[ARR [I] = 1;
}
}
戻りR&LT;
}

 


unique3関数(ARR){
//第2の実施形態に一致するアルゴリズム、基礎となるオブジェクトストレージがアレイであるため、
VARがobj = {};
//反復
(VARのためにI = 0、R = [];私<arr.length; Iは++){
// objが属性名ARRの現在の属性値が存在しない場合
IF(OBJ [ARR [I]]){!
//最終的な配列に、この値は
、R。プッシュ(ARR [I]);
//とするハッシュテーブルアレイ装置、自己定義された値として、この値
OBJ [ARR [I] = 1;
}
}
戻りR&LT;
}

 


/ *関数unique4(ARR){
ARRする//ソート
arr.sortを(関数(A、B){AB&}を返す)
//反復
のために(VAR 1 = I; Iはarr.lengthを<; Iは++){
//前回値と等しい電流値場合
(ARR [-I 1] === ARR [I])IFは{
//値削除
arr.spliceを(I ,. 1);
//値の削除が必要があるためループが前方に移動する
i--;
}
}
;戻りARR
*} /

 


/ *関数unique5(ARR){
//反復
のための(VARのI = 0; I <arr.length; Iは++){
//反復が現在の値に等しいARR見つけるために、
(VAR jのを= I + 1 ;; ){
添字J //レコード見出さ
; J = arr.indexOf(ARR [I]、j)を
jは-1であり、そして代表値を同一に続いていない場合//
IF(J == -1){
BREAK ;
}
//値を削除し
、arr.splice(J ,. 1)
}
}
戻りARRを;
} / *

 


unique6関数(ARR){
// ES6の新しい構文
セット新しい新しい(ARR)を返します;
}

ARR = VAR [5,4,9,1,6,8,7,5,4,2,4,5,6,4,2,6,4,2,1,5,9]
//テスト
コンソール.logの(unique1(ARR));
はconsole.log(unique2の(ARR));
はconsole.log(unique3(ARR));
//はconsole.log(unique4(ARR));
//はconsole.log(unique5(ARR ));
はconsole.log(unique6(ARR));
//効率試験
(VARのためにI = 0、arrtest = []; I <10000;私は++){
//のランダムアレイがデータ10000に追加
arrtest [I] Math.ceil =(Math.random()* 100)
}


console.time( "unique1");
unique1(arrtest)。
console.timeEnd( "unique1");
console.time( "unique2の");
unique2の(arrtest)。
console.timeEnd( "unique2の");
console.time( "unique3");
unique3(arrtest)。
console.timeEnd( "unique3");
/*console.time("unique4" );
unique4(arrtest)。
console.timeEnd( "unique4"); * /
/*console.time("unique5" );
unique5(arrtest)。
console.timeEnd( "unique5"); * /
console.time( "unique6");
unique6(arrtest)。
console.timeEnd( "unique6");
</スクリプト>
</ BODY>
</ HTML>

おすすめ

転載: www.cnblogs.com/awei313558147/p/11537194.html
おすすめ