Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
减少以日期为键的JavaScript对象数组?_Javascript_Arrays_Json_Loops - Fatal编程技术网

减少以日期为键的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

我正在使用的应用程序正在用javascript输出一个数组,如下所示:

 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+值;
}
}