上游我支持一个高频率的API调用。在调用之后,我将拥有一个大型对象数组,我需要使用NodeJS对每个对象以尽可能快的速度有效地汇总(添加)为总数。
我确信我可以用一些循环函数来实现这一点,但是我想看看这里的聪明人是否可以找到一个更有效的方法。
[{
samplefield1: 123,
samplefield2: 345,
samplefield3: 678,
samplefield4: 910,
samplefield5: 111
},
{
samplefield1: 123,
samplefield2: 345,
samplefield3: 678,
samplefield4: 910,
samplefield5: 111
},
{
samplefield1: 123,
samplefield2: 345,
samplefield3: 678,
samplefield4: 910,
samplefield5: 111
},
{
samplefield1: 123,
samplefield2: 345,
samplefield3: 678,
samplefield4: 910,
samplefield5: 111
}....
]
所需输出
{
samplefield1total: 1349596065934,
samplefield2total: 5856960650505,
samplefield3total: 4344343434343,
samplefield4total: 44444434342910,
samplefield5total: 79797696969696
}
作为一个额外的奖励,如果我也能从输入中得到所有记录的计数,就像下面那样添加到数组中,那将是令人惊奇的。。。
奖励挑战输出:
{
samplefield1total: 1349596065934,
samplefield2total: 5856960650505,
samplefield3total: 4344343434343,
samplefield4total: 44444434342910,
samplefield5total: 79797696969696,
recordcount: 145634
}
但是如果在上面做起来效率不高,我可以在外部用一个简单的array.length语句来做
感谢您能提供的任何帮助
您所能做的最好的事情是不要使用数组助手(它必须为每个简单加法实例分配一个调用帧)。只需要一个简单的for-loop,所以无论如何都需要得到数组长度。
null
const data = [{samplefield1: 123, samplefield2: 345, samplefield3: 678, samplefield4: 910, samplefield5: 111},{samplefield1: 123, samplefield2: 345, samplefield3: 678, samplefield4: 910, samplefield5: 111},{samplefield1: 123, samplefield2: 345, samplefield3: 678, samplefield4: 910, samplefield5: 111},{samplefield1: 123, samplefield2: 345, samplefield3: 678, samplefield4: 910, samplefield5: 111}];
let totals = data[0];
let recordcount = data.length;
let keys = Object.keys(totals);
let keycount = keys.length;
for(let i = 1; i < recordcount; i++) {
for(let j = 0; j < keycount; j++) {
totals[keys[j]] += data[i][keys[j]];
}
}
totals.recordcount = recordcount;
console.log(totals);