此问题基于以下问题: How do i add a summed list in a recursive method?
这次,我想计算.Gallery {
display: flex;
flex-wrap: wrap;
margin: -1em 0 1em -0.5em;
}
.img {
padding: 1em 0 0 0.5em;
flex: 1 0;
min-width:100%;
height:100%;
}
的平均值。因此,我创建了一个resultObject
,其中包含所有resultlist
个数字,并且一旦element.val
循环结束,就迭代了forEach
并计算了平均值。
该平均对象就是新的tempuserlist
。本示例仅显示我的数据集的一个小示例。对于较大的数据集,存在异步性问题。我已经尝试过Promises,但真的不知道如何使用它们。有人有主意吗?
result
答案 0 :(得分:1)
好的,
虽然我在准备一个小示例,但我注意到我的愚蠢错误……平均值不应在循环中计算……否则平均值将一遍又一遍地计算……对不起,看来我的问题没有得到解决。毕竟与承诺和异步编程无关。至少结果现在还可以,而且我还没有任何异步行为;)
无论如何,我感谢您愿意帮助我。但是,您的建议帮助我从不同的角度看待事情,而不是卡在这些诺言上。
function somefunc(obj) {
let temp = {};
let tempuserlist = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if(!obj[key].hasOwnProperty("userlist")) {
somefunc(obj[key]);
}
obj[key].userlist.forEach(function(element) {
if (!temp.hasOwnProperty(element.name)){
tempuserlist.push(temp[element.user] = { user: element.user});
temp[element.user].resultlist = [];
temp[element.user].val= 0;
} temp[element.name].resultlist.push(element.val);
});
}
}
for (const user in tempuserlist) {
tempuserlist[user].val= Math.round(tempuserlist[user].val/ tempuserlist[user].resultlist.length);
}
obj.userlist = tempuserlist;
}