別の配列から一意の値の新しい配列を作成するこの投稿 ( JavaScript 配列から重複を削除する) について。
問題のコード:
uniqueArray = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
})
これをテストデータとして使用:
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
望ましい結果は、一意の値のみを持つ配列です。
var unique_names = ["Mike","Matt","Nancy","Adam","Jenny","Carl"];
私がいる場所:
filter は配列の各メンバーに対して関数を実行すること、elem はレビュー対象の要素、pos はそのインデックスであることを理解しています。なんらかの理由でその関数が false を返す場合、その要素は新しい配列に含まれません。それで、それを通り抜けると、これが起こります:
- myArray.indexOf("Mike") は 0 と同じですか? はい、新しい配列に「Mike」を追加します。
- myArray.indexOf("Matt") は 1 と同じですか? はい、新しい配列に「Matt」を追加します。
- myArray.indexOf("Nancy") は 2 と同じですか? はい、新しい配列に「Nancy」を追加します。
[すべての要素について繰り返します。すべて合格。 ]
基本的に、2番目のナンシーがfalseと評価される理由がわかりません。