javascript - 如何使用 Javascript 对对象中的年份进行分组?

标签 javascript arrays object

我想在 JavaScript 中创建一个新对象来对年份进行分组。它将数据存储到年组中。

我现在拥有的数据:

{
    "8": {
        "date": "2016-02-26",
        "value": "0.89000"
    },
    "7": {
        "date": "2017-02-27",
        "value": "0.94000"
    },
    "6": {
        "date": "2017-06-01",
        "value": "0.94000"
    },
    "5": {
        "date": "2017-08-30",
        "value": "0.94000"
    },
    "4": {
        "date": "2017-11-30",
        "value": "1.01000"
    },
    "3": {
        "date": "2018-02-28",
        "value": "1.01000"
    },
    "2": {
        "date": "2018-06-01",
        "value": "1.01000"
    },
    "1": {
        "date": "2018-08-31",
        "value": "1.01000"
    },
    "0": {
        "date": "2018-11-30",
        "value": "1.16000"
    }
}

我想转换成类似的东西:

{
    2016: [
            {
                "date": "2016-02-26",
                "value": "0.89000"
            }
    ],
    2017: [
            {
                "date": "2017-02-27",
                "value": "0.94000"
            },
            {
                "date": "2017-06-01",
                "value": "0.94000"
            },
            {
                "date": "2017-06-01",
                "value": "0.94000"
            }, 
            {
                "date": "2017-08-30",
                "value": "0.94000"
            }
    ],
    2018: [
            {
                "date": "2018-02-27",
                "value": "0.104000"
            },
            {
                "date": "2018-06-01",
                "value": "1.01000"
            },
            {
                "date": "2018-08-31",
                "value": "1.01000"
            }, 
            {
                "date": "2018-11-30",
                "value": "1.16000"
            }
    ]
}

为了在这里发布问题,还有一些内容。一些更多的内容,目的是在此处发布问题。一些更多的内容,目的是在此处发布问题。一些更多的内容,目的是在此处发布问题。为了在这里发布问题,还有一些内容。

最佳答案

您可以使用 Object.values 将对象转换为数组。使用 reduce 遍历数组并将其汇总到一个对象中。使用 substring(0, 4) 获取日期字符串的前 4 个字符。

var obj = {"0":{"date":"2018-11-30","value":"1.16000"},"1":{"date":"2018-08-31","value":"1.01000"},"2":{"date":"2018-06-01","value":"1.01000"},"3":{"date":"2018-02-28","value":"1.01000"},"4":{"date":"2017-11-30","value":"1.01000"},"5":{"date":"2017-08-30","value":"0.94000"},"6":{"date":"2017-06-01","value":"0.94000"},"7":{"date":"2017-02-27","value":"0.94000"},"8":{"date":"2016-02-26","value":"0.89000"}}

var result = Object.values(obj).reduce((c, v) => {
  var y = v.date.substring(0, 4);
  (c[y] = c[y] || []).push(v);
  return c;
}, {});

console.log(result);

关于javascript - 如何使用 Javascript 对对象中的年份进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160819/

相关文章:

php - 数组插入时间跳跃

php - 使用 php 在按钮上安全地发送自动电子邮件/无垃圾邮件

javascript - 如何显示api的ajax响应的错误消息?

javascript - 获取元素的样式

javascript - 如果选中复选框,AngularJS 打印文本

c++ - 如何在 C++ 中删除数组中小于 X 的整数?

c - 将字符串输入存储到C中的不同数组中

javascript - 函数对象是否必要

C++ 如何访问和更改映射中对象的成员数据?

javascript - 需要删除对象数组中的重复项 - 获取键的较高值