合并基于Json数组的日期 [英] Merge Json array date based

查看:88
本文介绍了合并基于Json数组的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找不到解决方案:

我想基于一列(日期)对json数组进行分组,并使用 Javascript / Jquery 对它进行排序>? :

i want to group json array based on one column (date) and sort it with Javascript / Jquery ? :

我一直在尝试找到解决方案,但我不知道.

I have been trying finding a solution but i can't figure out.

[
    {
    "date" : "2010-01-01",
    "price" : 30
    },
    {
    "date" : "2010-02-01",
    "price" : 40
    },
    {
    "date" : "2010-03-01",
    "price" : 50
    },
    {
    "date" : "2010-01-01",
    "price2" : 45
    },
    {
    "date" : "2010-05-01",
    "price2" : 40
    },
    {
    "date" : "2010-10-01",
    "price2" : 50
    }
]

我想要这个:

[
    {
        "date" : "2010-01-01",
        "price" : 30,
        "price2" : 45
    },
    {
        "date" : "2010-02-01",
        "price" : 40,
        "price2" : null
    },
    {
        "date" : "2010-03-01",
        "price" : 50,
        "price2" : null
    },
    {
        "date" : "2010-05-01",
        "price" : null,
        "price2" : 40
    },
    {
        "date" : "2010-10-01",
        "price" : null
        "price2" : 50
    }
]

谢谢.

推荐答案

您可以首先使用sort()方法按日期对元素进行排序,然后可以使用forEach()按日期对元素进行分组.

You can first use sort() method to sort elements by date and then you can use forEach() to group elements by date.

var data = [{"date":"2010-01-01","price":30},{"date":"2010-02-01","price":40},{"date":"2010-03-01","price":50},{"date":"2010-01-01","price2":45},{"date":"2010-05-01","price2":40},{"date":"2010-10-01","price2":50}]
data.sort((a, b) => new Date(a.date) - new Date(b.date))

var result = []
data.forEach(function(e) {
  if(!this[e.date]) {
    this[e.date] = {date: e.date, price: null, price2: null}
    result.push(this[e.date])
  }
  this[e.date] = Object.assign(this[e.date], e)
})

console.log(JSON.stringify(result, 0, 4))

这篇关于合并基于Json数组的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆