【发布时间】:2017-08-28 06:55:54
【问题描述】:
我有两个类似的对象:
let data = [[
{
10: {key1: 1, key2: 2, key3: 3},
11: {key1: 1, key2: 2, key3: 3},
12: {key1: 1, key2: 2, key3: 3},
},
{},
{}
],
[
{
10: {key1: 1, key2: 2, key3: 3},
11: {key1: 1, key2: 2, key3: 3},
12: {key1: 1, key2: 2, key3: 3},
},
{},
{}
]]
我想创建一个新对象并对每个键的每个值求和。像这样:
let newData = [
{
10: {key1: 2, key2: 4, key3: 6},
11: {key1: 2, key2: 4, key3: 6},
12: {key1: 2, key2: 4, key3: 6},
},
{},
{}
]
每个对象都包含三个对象。在这三个对象中,有 45 个键,每个对象都有一个具有三个键/值的对象。
我找不到任何好的解决方案来汇总每个值。
我目前的解决方案是我首先循环通过data:
let count = 0;
let count2 = 0;
for(let ob of data){
for(let child in ob[0]){
keyOne = ob[0][child].keyOne;
keyTwo = ob[0][child].keyTwo;
keyThree = ob[0][child].keyThree;
keyFour = ob[0][child].keyFour;
if(count < 45) {
newData[0][count].keyOne += keyOne;
newData[0][count].keyTwo += gkeyTwop;
newData[0][count].keyThree += keyThree;
newData[0][count].keyFour += keyFour;
} else {
newData[0][count2].keyOne += keyOne;
newData[0][count2].keyTwo += keyTwo;
newData[0][count2].keyThree += keyThree;
newData[0][count2].keyFour += keyFour;
count2++;
}
count++;
}
在最坏的情况下,数据得到三个对象,每个对象有 45 个键。然后我必须这样做三遍。这似乎真的很糟糕。一定会有更好的办法。提示?
【问题讨论】:
-
如果您重复执行此操作,最好将各个对象的总和分开并仅添加总和而不是整个循环。
-
1+ 因为不称它们为“JSON 对象”;)
标签: javascript node.js performance javascript-objects