🔥
【typescript】リストから重複を除外する(オブジェクトのリストの場合)
リストから重複を除外する際、通常であればSet
を使いますが、オブジェクトのプロパティで重複を除外したい場合もあると思います。
そんなときはreduce
を使うとうまくいきます。
type User = {
id:string,
name?:string,
}
const userList:User[] = [
{id:'1',name:'hoge'},
{id:'2',name:'hogehoge'},
{id:'1',name:'hoge'},
{id:'3',name:'fuga'}
]
const removed = userList.reduce((acc:User[],current:User):User[]=>{
if(acc.some((user)=>user.id==current.id)){
return acc;}else{return [...acc, current]}
},[])
console.log(removed)
// [{ "id": "1", "name": "hoge"}, { "id": "2", "name": "hogehoge"}, { "id": "3", "name": "fuga"}]
Discussion