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

如何基于同一日期合并两个对象数组

如何解决如何基于同一日期合并两个对象数组

实际上,我想将具有相同日期的所有产品合并到以下相同的对象中,我尝试了很多算法,但没有用,所以这就是为什么我发表这篇文章。您可以找到数据示例和预期结果。

let obj = {}; for(let i = 0; i < this.data.length; i++){ let date = this.data[i].Date; let p_date = obj[date] || {}; obj[date] = Object.assign(p_date,this.data[i]); } let result = Object.values(obj); return result; 


  this.data = [
                      {
                        "Date": "12/06/2019","Rank": 1,"ASIN": "B01N9J7MLI","rating": "4,1","Reviews": 4592,"Price": "114,99","Prime": "No"
                      },{
                        "Date": "12/06/2019","Rank": 2,"ASIN": "B074QXGBG6","rating": 4,"Reviews": 29163,"Price": "60,"Prime": "No"
                      }];

预期结果:

 this.data = {
                "Date": "12/06/2019","Products": [
                {
                "Date": "12/06/2019","Prime": "No"
              },{
                "Date": "12/06/2019","Prime": "No"
              }
                ],}

感谢您的回答

解决方法

使用Array#reduce将数据累积到具有日期属性的对象。 Foreach对象查看累积对象中是否存在具有该日期的属性。如果没有,请使用日期属性和产品(带有空数组)创建它。在这两种情况下,都将当前对象添加到该数组中。
最后,使用Object.values从对象中获取值以获取所需的数组。

  this.data = [
    {
      "Date": "12/06/2019","Rank": 1,"ASIN": "B01N9J7MLI","Rating": "4,1","Reviews": 4592,"Price": "114,99","Prime": "No"
    },{
      "Date": "12/06/2019","Rank": 2,"ASIN": "B074QXGBG6","Rating": 4,"Reviews": 29163,"Price": "60,"Prime": "No"
    }];
    
    let res = Object.values(this.data.reduce((acc,cur) => {
        if (!acc[cur.Date])
            acc[cur.Date] = {Date: cur.Date,Products: []};
        acc[cur.Date].Products.push(cur);
        return acc;
    },{}));
    
    console.log(res);

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