JS合并数组对象中重复数据

假如有这样一组数据

var oldData=[
   {date:'2019-08-26',"queue_id":219,"queue_num":4,"queue_status":1,"queue_name":'预约接种'},
   {date:'2019-08-26',"queue_id":218,"queue_num":2,"queue_status":1,"queue_name":'预约接种'},
   {date:'2019-08-25',"queue_id":217,"queue_num":1,"queue_status":1,"queue_name":'预约接种'}
]      

我想把拥有相同日期的数据,放在一个数组里面,

第一种方案

1、首先我们把源数据先变成目标数据的规则

var oldDataRule = []
oldData.forEach(el => {
  var oldObj = {
    date: el.date,
    list:[]
  }
  oldObj.list.push(el)
  oldDataRule.push(oldObj)
})
console.log(oldDataRule)

打印出来的数据如下

20190830141919.png

2、然后我们把源数据去重,把相同日期的数据合并成list

            var newData = []
            var newObj = {}
            oldDataRule.forEach((el, i) => {
              if (!newObj[el.date]) {
                newData.push(el);
                newObj[el.date] = true;
              } else {
                newData.forEach(el => {
                  if (el.date === oldDataRule[i].date) {
                    el.list = el.list.concat(oldDataRule[i].list);
                    // el.list = [...el.list, ...oldDataRule[i].list]; // es6语法
                  }
                })
              }
            })
            console.log(newData)

最后出来的结构如下

QQ截图20190830150433.png

第二种方案

var oldDataRule = []
var newData = []
oldData.forEach( item =>{
  oldDataRule [item.date] = oldDataRule [item.date] || [];
  oldDataRule [item.date].push(item);
})
for (let key in oldDataRule ) {
  let obj = {}
  obj.date = key
  obj.list =arr[key]
  newData.push(obj)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,845评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,793评论 1 32
  • 九月,相约大一。 大学在我眼中是一个自由而又充满趣味的地方。曾经我对它的一切都很感兴趣,终于,开学第一件事随着时间...
    习于于冷阅读 3,880评论 0 0
  • 球员管理系统: 类一 球员类:成员变量(球员信息)-姓名,性别,ID,位置,工资,年龄 类二 球队类:需要使用球...
    在努力中阅读 1,085评论 0 0
  • 昨晚决定睡前把手机放客厅不带回房间,然后决定从2点睡觉开始慢慢把时间前移。舍友说这样吧我睡觉的时候把你手机带走,你...
    招财小能手阅读 656评论 0 0