首页 > 解决方案 > 计算对象属性的百分比

问题描述

我有一个对象,我想计算百分比并在地图中显示,目前我得到的数据是对象中的原始数据。

这是我从后端收到的对象

          [{
            "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,
          }]

标签: javascriptreactjs

解决方案


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);


推荐阅读