JavaScript のオブジェクトリテラルで重複した要素を全て削除してリストを作る

More than 1 year has passed since last update.


目的

オブジェクトリテラルのあるキーが重複している場合、重複した要素を除外してリストを作りたいと考えました。

それも for loop なしで。


対象のリスト

someKey
value1

1
...

2
...

3
...

3
...

2
...

2
...

5
...

変更後

someKey
value1

1
...

5
...


実装

every と filter で実現できました!

var list = [{someKey:1},{someKey:2},{someKey:3},{someKey:3},{someKey:2},{someKey:2},{someKey:5}];

list.filter((element, index, array) => array.every((current, someIndex) => !(index !== someIndex && current.someKey === element.someKey)))


結果

[ { someKey: 1 }, { someKey: 5 } ]