微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数组中的对象去重es6方法

需求

  • 将数据处理后产生的code相同的数据去除后返回给后端

解决

  • 处理后产生的重复数据
// 处理后产生的重复数据
let tableList = [
  { code: '001', name: 'aaa', age: '18', other: 'abc' },
  { code: '002', name: 'bdfd', age: '28', other: 'abc' },
  { code: '002', name: 'aasdf', age: '98', other: 'abc' },
  { code: '003', name: 'aadfa', age: '26', other: 'abc' },
  { code: '004', name: 'afsa', age: '18', other: 'abc' }
]
  • 封装去重方法
    • has方法可以判断Map对象中是否存在指定元素,有则返回true,否则返回false
    • set方法可以向Map对象添加新元素 map.set(key, value)
    • values方法可以返回Map对象值的遍历器对象
    • 使用 for-of 循环
// 封装去重方法
function removalRepeat (arr) {
  let map = new Map()
  for (let i of arr) {
    if (!map.has(i.code)) {
      map.set(i.code, i)
    }
  }
  arr = [...map.values()]
  console.log(arr)
}

也可以将唯一值作为map的键(这里的code),键不会重复

set (key,value) 设置  如果之前有过key值就修改,没有就增加 返回新的map实例
// 封装去重方法
function removalRepeat (arr) {
  let map = new Map()
  for (let i of arr) {
      map.set(i.code, i)
  }
  arr = [...map.values()]
  console.log(arr)
}
  • 结果
removalRepeat(tableList)
// 打印的数据
[
  { code: '001', name: 'aaa', age: '18', other: 'abc' },
  { code: '002', name: 'bdfd', age: '28', other: 'abc' },
  { code: '003', name: 'aadfa', age: '26', other: 'abc' },
  { code: '004', name: 'afsa', age: '18', other: 'abc' }
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐