🔥

【typescript】リストから重複を除外する(オブジェクトのリストの場合)

2024/04/08に公開

リストから重複を除外する際、通常であれば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