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

从 api 响应构建数据集

如何解决从 api 响应构建数据集

我有这个:

{
    "2018-12": 1778
    "2018-11": 3190
    "2018-10": 5318
    "2018-09": 2498
    "2018-08": -2791
    "2018-07": 1710
    "2018-06": 1786
    "2019-12": 3513.97
    "2019-11": 2975.9700000000003
    "2019-10": -5407.53
    "2019-09": 5188.02
    "2019-08": 5599.2699999999995
    "2019-07": 3930.37
    "2019-06": 1434.95
    "2019-05": 4834.02
    "2019-04": 2479.5299999999997
    "2019-03": 6247.06
    "2019-02": 2066.4
    "2019-01": 2073.8799999999997
    "2020-12": 1092.79
}

我的代码是:

    let data = (new Array(12)).fill(null);
    const datasets = [];
    const colors = ['#4A90E270','#27AE6070','#F7981C70','#47381C70'];
    let colorIndex = 0;
    Object.entries(inputObject).forEach(([key,value]) => {
      const [year,month] = key.split('-');
      const foundElement = datasets.some((el) => el.label === year.toString());
      if (!foundElement) {
        datasets.push({
          data,label: year.toString(),borderColor: colors[colorIndex],fill: false,lineTension: 0,});
        colorIndex += 1;
        data = (new Array(12)).fill(null);
      }
      data[parseInt(month,10) - 1] = parseFloat(value).toFixed(1);
    });

但是没有按预期工作。因为我想按年份获取所有值,例如将 2018 年的所有数据放入 data,在数据重置 data 后放入 2019 年的所有数据。你能帮我吗 ?现在像完成了不能正常工作。提前感谢并为我的英语感到抱歉

解决方法

我不确定您的预期结果是什么。

如果需要按年份推送对象中的所有数据,则需要按键迭代数据,然后将值推送到年份键。

const data = {
    "2018-12": 1778,"2018-11": 3190,"2018-10": 5318,"2018-09": 2498,"2018-08": -2791,"2018-07": 1710,"2018-06": 1786,"2019-12": 3513.97,"2019-11": 2975.9700000000003,"2019-10": -5407.53,"2019-09": 5188.02,"2019-08": 5599.2699999999995,"2019-07": 3930.37,"2019-06": 1434.95,"2019-05": 4834.02,"2019-04": 2479.5299999999997,"2019-03": 6247.06,"2019-02": 2066.4,"2019-01": 2073.8799999999997,"2020-12": 1092.79,}

let result = {}

Object.keys(data).forEach(date => {
   const year = date.split("-")[0]
   if(!result[year]){
     result[year]=[data[date]]
   }
   else{
     result[year].push(data[date])
   }
})

console.log(result)

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