1 つ目は、より従来的な方法です
アイデア:
1. 結果を保存する新しい配列を構築します
2. 毎回、元の配列から 1 つを取り出します。ループ要素の場合、indexOf を使用して新しい配列
に要素が存在するかどうかを確認します。 存在しない場合は、結果の配列
Array.prototype.unique1 = function(){
var res = []
for(var i = 0; i
if(res.indexOf(this[i]) == -1){
res.push(this[i]); }
戻り値
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1( ))
この基礎はわずかに最適化できますが、原理は同じであり、効果は明らかではありません
Array.prototype.unique1 = function(){
var res = [this [0]];//元の配列の最初の要素を直接変更します 構築された新しい配列に格納します
for(var i = 1; i if(res.indexOf(this[i]) == -1){
res.push(this[i]);
}
}
return
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr. unique1())
2 番目の方法は、上記の方法より効率的です
アイデア: 1. 最初に元の配列を並べ替えます
2.元の配列の i 番目の要素が結果の配列の最後の要素であるかどうか同じです。ソートされているため、重複した要素は隣接する位置にあります。同じでない場合、要素は次のようになります。結果配列に格納されます
this.sort(); // 最初に並べ替えます
var res = [ this[0]]
for(var i = 1; i if(this[i] !== res[res.length - 1]){
res.push(this[i])
}
}
return
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
アラート(arr.unique2())