やりたいこと
type Item = {
id: number
value: string
};
const items: Array<Item> = [
{ id: 1, value: 'foo' },
{ id: 2, value: 'bar' },
{ id: 3, value: 'bar' },
{ id: 4, value: 'baz' },
{ id: 5, value: 'baz' }
];
// 配列itemsからidの値は気にせず、valueの値が同じものを消したい!
const expect: Array<Item> = [
{ id: 1, value: 'foo' },
{ id: 2, value: 'bar' },
{ id: 4, value: 'baz' }
];
方法
const result = items.filter((item, index, self) =>
self.map(e => e.value).indexOf(item.value) === index
);
result.forEach(e => console.log('id:' + e.id + ',' + 'value:' + e.value));
// id:1,value:foo
// id:2,value:bar
// id:4,value:baz
- filter()やmap()の第3引数ってどういう時に使うんだろうと思っていましたが、こういう用途があるんですね。勉強になりました。