JS 数组对象的筛选、去重、排序

数组对象的筛选去重排序

  • 需求:

    项目需要对一个数组对象中的部分字符串进行截取,并且需要去除重复的内容,最后再将字符串进行排序

  • 目标效果

原数据格式:

在这里插入图片描述

目标数据格式

在这里插入图片描述

没错,就是需要转换为el-table中的筛选数据的格式。

  • 解决过程

1.我们只需要name的值,因此先进行对象截取

​ 对象截取,这里使用Object.assign()
在这里插入图片描述
​ console.log 打印 dataName

在这里插入图片描述

2.得到了目标数据的格式,这一步对dataName进行去重

在这里插入图片描述

​ 打印 dataName 看看
在这里插入图片描述
​ 已经没有重复的对象了

3.最后,给 dataName 排序,使用sort()

​ 根据设备号前面的数字进行排序

在这里插入图片描述
​ 最后,来打印dataName看一看

在这里插入图片描述
​ 完成了!!

最后附上所有代码

const data = [{
    date: '2022-05-06',
    name: '1号设备',
    unit: 'A'
  },
  {
    date: '2022-05-07',
    name: '1号设备',
    unit: 'A'
  },
  {
    date: '2022-05-08',
    name: '6号设备',
    unit: 'A'
  },
  {
    date: '2022-05-08',
    name: '6号设备',
    unit: 'A'
  },
  {
    date: '2022-05-09',
    name: '4号设备',
    unit: 'A'
  },
  {
    date: '2022-05-10',
    name: '5号设备',
    unit: 'A'
  },
  {
    date: '2022-05-11',
    name: '2号设备',
    unit: 'A'
  },
  {
    date: '2022-05-12',
    name: '3号设备',
    unit: 'A'
  }
]

// 获取name属性,并创建为对应格式
let dataName = data.map(item => {
  return Object.assign({}, {
    text: item.name,
    value: item.name
  })
})
console.log('筛选:', dataName);

// 去重
let obj = {}
dataName = dataName.reduce((a, b) => {
  obj[b.text] ? "" : (obj[b.text] = true && a.push(b));
  return a
}, [])
console.log('去重:', dataName);

// 排序
dataName = dataName.sort((a, b) => {
  return a.text.slice(0, 1) - b.text.slice(0, 1)
})

console.log('排序:', dataName)

版权声明:本文为weixin_64012291原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。