1つ目は、より一般的な方法です
アイデア:
1.新しい配列ストレージ結果を作成します
2。サイクルの元の配列から要素を取り、この要素の結果とともにこの要素サイクルを持つ配列と比較してください
3.結果配列にそのような要素がない場合、それは配列に保存されます
次のようにコードコードをコピーします。
array.prototype.unique1 = function(){
var res = [this [0]];
for(var i = 1; i <this.length; i ++){
var repeat = false;
for(var j = 0; j <res.length; j ++){
if(this [i] == res [j]){
repeat = true;
壊す;
}
}
if(!repeat){
res.push(this [i]);
}
}
RESを返します。
}
var arr = [1、 'a'、 'a'、 'b'、 'd'、 'e'、 'e'、1、0]]
alert(arr.unique1());
2番目の方法は、上記の方法よりも効率的です
アイデア:
1.最初に元の配列を並べ替えます
2。元の配列の最初の要素が結果アレイの最後の要素と同じかどうかを確認します。
3.異なる場合は、要素を結果配列に保存します
次のようにコードコードをコピーします。
array.prototype.unique2 = function(){
this.sort();
var res = [this [0]];
for(var i = 1; i <this.length; i ++){
if(this [i]!== res.length -1]){
res.push(this [i]);
}
}
RESを返します。
}
var arr = [1、 'a'、 'a'、 'b'、 'd'、 'e'、 'e'、1、0]]
alert(arr.unique2());
また、2番目の方法には特定の制限があります。復帰前のソート、最後の返品の最後の返品結果もソートされているためです。注文を変更しないために配列の順序が必要な場合は、この方法を実行できません。
3番目の方法(推奨)
アイデア:
1.新しい配列ストレージ結果を作成します
2。空のオブジェクトを作成します
3.サイクルの場合、この要素が繰り返されない場合は、各要素を比較します。
注:比較する方法については、元の配列から要素を取り、この属性にアクセスできる場合は、繰り返されます。
次のようにコードコードをコピーします。
array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i <this.length; i ++){
if(!json [this [i]]){
res.push(this [i]);
json [this [i]] = 1;
}
}
RESを返します。
}
var arr = [112,112,34、 'hello'、112,112,34、 'hello'、 'str'、 'str1'];
alert(arr.unique3());