问题描述
我有这个:
{
"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)