首页 > 解决方案 > 对计算结果感到困惑

问题描述

我有一个如下的json。

const words = [{
    "Id": "1",
    "Status": "Not Started"
  },
  {
    "Id": "2",
    "Status": "Not Started"
  },
  {
    "Id": "3",
    "Status": "Completed"
  },
  {
    "Id": "4",
    "Status": "Not Started"
  },
  {
    "Id": "5",
    "Status": "Not Started"
  }];

使用 Javascript,我想计算Completed百分比,在当前的 json 中,它应该是 20%,因为有 5 个项目,1 个是完整的。

这是我写的代码。

const users = [
  {
    "Id": "1",
    "Status__c": "Not Started"
  },
  {
    "Id": "2",
    "Status__c": "Not Started"
  },
  {
    "Id": "3",
    "Status__c": "Completed"
  },
  {
    "Id": "4",
    "Status__c": "Not Started"
  },
  {
    "Id": "5",
    "Status__c": "Not Started"
  }
];

let nS = users.filter(it => it.Status__c==='Not Started');
let cm = users.filter(it => it.Status__c!=='Not Started');

console.log(nS.length +' \t' +cm.length);

这给出了准确的计数结果。但在这里我想要百分比。结果中也可能有 3 或 7 个(不是一直有 5 个),我希望这个百分比甚至在这些情况下也能显示结果。

谢谢

标签: javascriptjson

解决方案


只需计算已完成的项目reduce,然后将其除以项目总数:

let completedCount = users.reduce((count, it) => count + (it.Status__c === "Completed" ? 1 : 0), 0);

let completedPercentage = 100 * completedCount / users.length;

注意:您可能需要users.length !== 0在划分之前检查是否。


推荐阅读