ゆずめも

私による私のためのメモ的なブログです。主に勉強した事について書いてます。

arrayオブジェクトの要素をdistinctする

Javascriptの配列をdistinctしたくて
下記のサイト見てメソッドないかなーと思ったけど、メソッドはないっぽい

というわけでdistinctのやり方調べたのでメモ

サンプルコード

arr = [1,2,3,1,3]
arr.filter(function(element, index, array) {
  return array.indexOf(element) === index
})
console.log(arr)//=>[1,2,3]

解説

filterメソッドを使って実装しています

filterメソッドはfunctionオブジェクトを引数に動作するのですが
引数に

  • element - 配列の1要素
  • index - 配列の添字
  • array - filter後の配列

が渡ってきます

arrayからelement(現在の)要素を探して
それが(現在の要素の)indexと同じかどうかを調べて
同じならtrueを返し、新しい要素としてarrayに追加する