JavaScript 带有reduce 函数的求和和百分比

标签 javascript

我是 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/

相关文章:

javascript - 如何在 angularjs 1.3 中将表单中的特定字段设置为脏

php - 浏览图像列表的最简单方法是什么?

javascript - 将 2 个参数在 2 个不同的复选框中传递给一个函数

javascript - 如何向后循环遍历字符串数组 x 次并在到达末尾时重新开始?

javascript - 提交前更新表单输入

javascript计算人的年龄和高度

javascript - 在原始 JavaScript 中触发点击事件

javascript - 如何删除输入字段中的空白空间并重新分配 trim 值

javascript - 从 HTML 文件访问 JavaScript 函数

javascript - 在 Javascript 中(使用 Node.js 时),你如何知道/定义变量的范围?