YUI のソースコードを時々見ると、必ず何かが得られます。
1. YUI のソースコード
var toObject = function(a) {
var o =
for (var i=0, j=a.length; io[a[i]] = true; >}
return o;
};
var key = function(o) {
var a=[], i;
for (i in o) {
if ( o.hasOwnProperty(i)) { // ここでの YUI ソース コードは lang.hasOwnProperty(o, i)
a.push(i);
}
return a; 🎜>};
var uniq = function(a) {
return key(toObject(a))
};
注: 記述の便宜上、各メソッドの前のクラス名は省略しています。 YUI は自分で確認できます。 ソースコードは 2.7.0b と 2.8.0r4 の両方が利用可能です (この部分のコードは同じです)。
2.このメソッド
1. まず、ターゲット配列の値をキーとしてオブジェクトを生成します。このステップが最も重要です。オブジェクト内でキーを繰り返すことができないため、これにより重複する値が巧みに除外されます。
2. 生成されたオブジェクトをトラバースし、これらのキーを取り出して配列に配置します。これで完了です。(簡単、たったの 2 ステップ)
3. このメソッドの特徴>1. このメソッドの場合、配列内に項目がいくつあっても、走査されるのは 2 回だけであり、パフォーマンス上の利点は明らかです (以前のやり方を思い出してください。配列項目を 1 つずつ比較すると、パフォーマンスの違いが大きくなる可能性があります)。
2. テスト後、このメソッドは配列項目が文字列と数値である 1 次元配列にのみ適用できます (多次元配列で重複を除外するのはあまりにも信頼性が低いと思います)。
その他の方法は前回の記事を参照してください。