Javascript 对象 - 删除重复的 id

C S*_*per -1 javascript reactjs

我有下面的示例 javascript 数组对象 -

[ {id:"B1",name:"Belacost",group:"Quim"},
  {id:"B1",name:"Medtown",group:"Bik"},
  {id:"B1",name:"Regkim",group:"Dum"},
  {id:"C1",name:"CSet",group:"Core"},
  {id:"D1",name:"Merigo",group:"Dian"},
  {id:"D1",name:"Chilland",group:"Ground"},
  {id:"N1",name:"Fiwkow",group:"Vig"},
]
Run Code Online (Sandbox Code Playgroud)

在这个数组中,如果重复,我想将 id 设为空。

Eg. [ {id:"B1",name:"Belacost",group:"Quim"}, //id is here since this is first time
      {id:"",name:"Medtown",group:"Bik"}, //id is blank since we already have B1
      {id:"",name:"Regkim",group:"Dum"},
      {id:"C1",name:"CSet",group:"Core"},
      {id:"D1",name:"Merigo",group:"Dian"}, // id is here since D1 is first time
      {id:"",name:"Chilland",group:"Ground"}, //id is empty since we already have id D1
      {id:"N1",name:"Fiwkow",group:"Vig"},
    ]
Run Code Online (Sandbox Code Playgroud)

我尝试通过 map 实现它,但找不到重复 id。

Sac*_*aka 6

使用reduce方法

const list = [ {id:"B1",name:"Belacost",group:"Quim"},
  {id:"B1",name:"Medtown",group:"Bik"},
  {id:"B1",name:"Regkim",group:"Dum"},
  {id:"C1",name:"CSet",group:"Core"},
  {id:"D1",name:"Merigo",group:"Dian"},
  {id:"D1",name:"Chilland",group:"Ground"},
  {id:"N1",name:"Fiwkow",group:"Vig"},
]


const result = list.reduce((acc, item ) => { 
  
  const isExisting = acc.some(i => i.id === item.id)
  
  if(isExisting){
     return [...acc, {...item, id: ""}]
  }
  
  return [...acc, item]

}, [])

console.log(result)
Run Code Online (Sandbox Code Playgroud)