巧用Map去重数组对象

265 阅读1分钟

前情摘要:一天,同事过来找我,哥,我使用[...new Set(arr)]对数组去重怎么不行,有啥好办法来解决? 我寻思着,不应该呀,我都没有出现过呢,于是在百忙之中,偷偷研究了下,发现还真是这样的,而且我也不知道啥原因.....

上图例:

12312312.jpg

居然没有去重,一下整个人都不好了~~~

55.jpg

于是,咋果断找度娘问一问,找了很多资料,都没有一个是非常明确的答案,估计是本人的知识不够,不能完全理解大神的表述,都没有一个明确的答复,那就先不理,问题还得帮着解决,有知道的大神,留下您宝贵的一笔。

一般我们在对简单的数组去重的时候,都喜欢使用[...new Set(arr)]来去重,但是,有一天,发现使用[...new Set(arr)],怎么办....怎么办....怎么办....

凡事都要做两手准备,我们写代码也不例外,废话不多说了,等下被打~~~~

说干咋就干,首先想到的就是对象去重,但对象去重还得用filter、forEach等,前辈教导:能一行代码解决的问题,绝对不要写两行,于是就想到了map,于是....我直接上代码吧。

let UserList = [
    {
      id: 1,
      userName: '张三'
    },
    {
      id: 2,
      userName: '李四'
    },
    {
      id: 3,
      userName: '王五'
    },
    {
      id: 4,
      userName: '赵六'
    },
    {
      id: 4,
      userName: '赵六'
    },
    {
      id: 4,
      userName: '赵六'
    }
  ];
let map = new Map();
for (let item of UserList) {
  map.set(item.id, item)
}
let newArr = [...map.values()]
console.log("newArr====>", newArr)



333.jpg

毛主席说的没错,实践出真理,然后成功了