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に追加する