javascript - 使用reduce方法JS后的toFixed
问题描述
我正在映射一个数组并将 50 个项目减少到 1 - 它们的总和。那 50 个项目是浮点精度数。请帮忙,我不明白我应该在该地图的哪个位置放置固定(2),以获得正确的 summaryIncome 属性,而不是像这样:39990,89999999999913。
var data = [
{id: 1, incomes: [{value:1}, {value: 2}]},
{id: 2, incomes: [{value:2}, {value: 3}]}],
...
]
var summary = data.map(item => ({
...item,
summaryIncome: item.incomes.reduce((acc, income) =>
acc += income.value, 0)
}));
解决方案
为了保持总和准确,请toFixed
在总结所有value
s 后调用:
var data = [
{id: 1, incomes: [{value: 0.1}, {value: 0.2}]},
{id: 2, incomes: [{value:2}, {value: 3}]},
]
var summary = data.map(item => ({
...item,
summaryIncome: item.incomes.reduce((acc, income) => acc + income.value, 0).toFixed(2)
}));
console.log(summary);
仅在必要时输入小数点:
var data = [
{id: 1, incomes: [{value: 0.1}, {value: 0.2}]},
{id: 2, incomes: [{value:2}, {value: 3}]},
]
var summary = data.map(item => ({
...item,
summaryIncome: (() => {
const trueSum = item.incomes.reduce((acc, income) => acc + income.value, 0);
return Number.isInteger(trueSum) ? String(trueSum) : trueSum.toFixed(2);
})()
}));
console.log(summary);
推荐阅读
- react-native - 将本机图像路径反应到 base64
- c++ - 加载 TensorFlow 模型以使用 C++ 操作音频流
- python - 如何在python中将列名从日期更改为月份名称-年份
- java - 无法在 android studio 中将数据上传到 Firebase
- javascript - firebase-ui如何覆盖标题
- python - 一次从两台设备使用 API 访问 Binance
- python-3.x - 如何将 Python 与 PowerDesigner 一起使用?
- html - CSS 在 Mozilla 和 IE 中是否正常工作,但在 Chrome 中工作正常?
- mysql - 如何从mysql中的特定值排序?
- c++ - 重新分配静态变量如何工作?