减少以日期为键的JavaScript对象数组?
我正在使用的应用程序正在用javascript输出一个数组,如下所示:减少以日期为键的JavaScript对象数组?,javascript,arrays,json,loops,Javascript,Arrays,Json,Loops,我正在使用的应用程序正在用javascript输出一个数组,如下所示: let realData = []; realData.push({"2021-01-01":"5,000","2021-02-01":"5,000", "2021-03-01":"5,000","2021-04-01":"5,00
let realData = [];
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
console.log(realData);
[
{
"month": "2020-06-01",
"value": "2500.00",
}, ..
每行有12个条目(每个月)
我正在寻找一种有效的方法来循环它们,并在同一个月求和;将每个对象合并到2021年1月将显示上面的20000个对象
我以前使用过以下代码:
var foo = _.chain(data)
.groupBy('month')
.map(function (objects, period) {
return {
month: period,
value: _.sumBy(objects, item => Number(item.value)),
};
})
.value();
这真的很有效;但是我使用的数据没有命名键(即,在我有一个JSON文件之前:
let realData = [];
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
realData.push({"2021-01-01":"5,000","2021-02-01":"5,000",
"2021-03-01":"5,000","2021-04-01":"5,000",
"2021-05-01":"5,000","2021-06-01":"5,000",
"2021-07-01":"5,000","2021-08-01":"5,000",
"2021-09-01":"5,000","2021-10-01":"5,000",
"2021-11-01":"5,000","2021-12-01":"5,000"});
console.log(realData);
[
{
"month": "2020-06-01",
"value": "2500.00",
}, ..
我试图实现的是可能的,还是需要重新查看数据的存储方式?当我必须这样做时,我通常使用对象的帮助。看看这个片段是否对您有帮助
let测试=[
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"}];
常数和={};
test.forEach((行)=>{
Object.keys(行).forEach((键)=>{
如果(!sum.hasOwnProperty(键)){
和[键]=0;
}
求和[key]+=数字(第[key]行)。替换(/,/g',);
});
});
console.log(sum);
当我必须做这样的事情时,我通常使用对象的帮助。看看这段代码是否对你有帮助
let测试=[
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"},
{"2021-01-01": "5,000", "2021-02-01": "5,000", "2021-03-01": "5,000", "2021-04-01": "5,000", "2021-05-01": "5,000"}];
常数和={};
test.forEach((行)=>{
Object.keys(行).forEach((键)=>{
如果(!sum.hasOwnProperty(键)){
和[键]=0;
}
求和[key]+=数字(第[key]行)。替换(/,/g',);
});
});
console.log(sum);
我从吉尔伯托和我的同事那里得到了灵感,制作了迄今为止效率最高的一款
设i=years.length;
而(我--){
常数年=年[i];
常量键=对象键(年);
设m=keys.length;
而(m--){
const month=键[m];
//月值
常量值=+年[月]。替换(/,/g,);
//添加到当前月份总数,否则将创建它
总和[月]=总和[月]| | 0+值;
}
}
我从吉尔伯托和我的同事那里得到灵感,做出了迄今为止最有效的一个
设i=years.length;
而(我--){
常数年=年[i];
常量键=对象键(年);
设m=keys.length;
而(m--){
const month=键[m];
//月值
常量值=+年[月]。替换(/,/g,);
//添加到当前月份总数,否则将创建它
总和[月]=总和[月]| | 0+值;
}
}