我是 javascript 新手,我有数组对象,它的键total,failure 以及相应的整数值。我想添加所有数组对象的总计,并且还想从总和值中得出失败的总百分比
使用javascript的reduce函数,我可以将所有数组对象的总和相加,但无法获得总和值的失败百分比。请在此提出您的宝贵意见
下面是我的代码:
var data = [
{"total":728, "failure": 76},
{"total":708, "failure": 56},
{"total":435, "failure": 36},
{"total":324, "failure": 93},
{"total":649, "failure": 65}
]
var r = data.reduce((a, b) => ({total: a.total + b.total}));
console.log(r)
这里使用reduce函数,我可以添加总计并获取计数,现在我需要使用reduce函数以百分比表示失败。请提出建议
最佳答案
如果failure
是一个百分比,你需要注意如何累积这样的数字。您应该首先将此类百分比转换为绝对失败数计数,将其相加,然后再转换回百分比:
var data = [
{"total":728, "failure": 76},
{"total":708, "failure": 56},
{"total":435, "failure": 36},
{"total":324, "failure": 93},
{"total":649, "failure": 65}
];
const res = data.reduce((acc, b) => ({
total: acc.total + b.total,
failureCount: acc.failureCount + Math.round(b.total * b.failure/100)
}), { total: 0, failureCount: 0 });
res.failure = Math.round(res.failureCount / res.total * 100);
console.log(res);
我认为第一个 Math.round
是必要的,因为失败计数不是整数似乎是不合理的。 Math.round
的最终应用只是一个选择。如果您想要更准确的百分比,可以忽略该百分比。
关于JavaScript 带有reduce 函数的求和和百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56841423/