JS あるキーが重複したオブジェクトを取り除く
const a = [ { name: 'Risa', age: 22, }, { name: 'Ryu', age: 20, }, { name: 'Risa', age: 22, }, ];
このような配列がある。要素のオブジェクトの name の値が重複しているオブジェクトを1つ取り除きたい。
const mapped = new Map(a.map((_a) => [_a.name, _a]));
Mapインスタンスを作成。a.map((_a) => [_a.name, _a])
で name をキー、_aそのものを値として作成。
この時点で重複が取り除かれる。
// 作成されたMapインスタンス {'Risa' => {…}, 'Ryu' => {…}}
次にこのインスタンスからイテレーターオブジェクトを作成する。要素が列挙される。
Map.prototype.values() - JavaScript | MDN
const iterator = mapped.values();
Array.fromでイテラブルなオブジェクトを配列に変更する。
Array.from() - JavaScript | MDN
const newArray = Array.from(iterator) // [{name: 'Risa', age: 22}, {name: 'Ryu', age: 20}]