javascript - 计算对象属性的百分比
问题描述
我有一个对象,我想计算百分比并在地图中显示,目前我得到的数据是对象中的原始数据。
这是我从后端收到的对象
[{
"date": "26/08/2021",
"walking": 965.2107,
"running": 964.0539,
"sleeping": 962.1473,
"swimming": 961.8081,
"studying": 961.5081,
}]
基于对象,我希望在相应的键/值对中计算和替换百分比。它将获取对象值,将其相加并计算百分比。这是我期望返回的
[{
"date": "26/08/2021",
"walking": 20,
"running": 20,
"sleeping": 20,
"swimming": 20,
"studying": 20,
}]
解决方案
const data = [{
"date": "26/08/2021",
"walking": 965.2107,
"running": 964.0539,
"sleeping": 962.1473,
"swimming": 961.8081,
"studying": 961.5081,
}];
const dataInPerCents = data.map(item => {
const itemCopy = {...item};
const keys = Object.keys(itemCopy).filter(key => key !== "date");
const sum = keys.reduce((sum, key) => sum + itemCopy[key], 0);
keys.forEach(key => itemCopy[key] = Math.round(100 * itemCopy[key] / sum));
itemCopy.top3 = keys.sort((key1, key2) => item[key2] - item[key1]).slice(0, 3); // Asked in comment below
return itemCopy;
});
console.log(dataInPerCents);
推荐阅读
- python - 映射反转字典
- video-streaming - Video.js HLS 在 Android 设备上显示音频选择器?
- java - Visual Studio Code Java 扩展包启动模板 (vscode)
- javascript - Javascript - 如何摆脱数组中的所有方括号
- razor - 具有不同行背景的 BsTable
- python - 熊猫中的地图功能
- python - Django Mock 一个在类函数中使用的导入函数,作为单元测试的一部分
- ios - 有没有办法只比较枚举类型并忽略其关联值?
- javascript - 在数组过滤时反应更新,但在添加元素时反应更新
- r - Merging / combining columns is not working at all