0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptで配列から重複しているIDを削除する

Posted at

どうも!TABEです。

JavaScriptでデータを持っている配列の中で(IDや、Nameなどの値が入っている配列)
Idが重複している場合にES6以降であればfilterを使って重複を削除できるので、それをメモが代わりに書いておきます。

結論から言うとarrayという配列があった時に、重複しているデータを削除させたい場合は以下の様にします。

const arrayFilterResult = array.filter((v, i, a) => a.findIndex(t => (t.id === v.id)) === i);

関数は以下のパラメータを取ります:

v: 現在の配列要素
i: 現在の配列要素のインデックス
a: 配列自体
t: 配列の要素

Array.prototype.findIndexメソッドを使用しています。このメソッドは配列の各要素に対してテスト関数を実行し、テスト関数がtrueを返す最初の要素のインデックスを返します。もしテスト関数がどの要素に対してもtrueを返さない場合は、-1を返します。

findIndexメソッドで、現在の要素vと同じidプロパティを持つ最初の要素のインデックスを検索しています。もし現在の要素がそのidに対して最初の要素であれば、そのインデックスiはfindIndexメソッドが返すインデックスと等しくなります。これはそのidを持つ要素が重複していないことを意味します。その結果、テスト関数はtrueを返し、要素は新しい配列arrayFilterResultに追加されます。

tは、Array.prototype.findIndexメソッド内で使われる関数のパラメータです。この関数はarray配列の各要素をtとして受け取り、その要素が現在の要素vと同じidプロパティを持つかどうかをチェックします。

コードのこの部分:a.findIndex(t => (t.id === v.id))では、tはarray配列の各要素を表しています。この関数は、t.id === v.idという条件を使って、tのidプロパティが現在の要素vのidプロパティと同じかどうかをチェックしています。

以上です!
参考になれば幸いです。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?