Javascript 按键计算对象数组(动态)上的百分比

Javascript 按键计算对象数组(动态)上的百分比,javascript,Javascript,下面是javascript中的对象数组。如果有任何新的状态键到达,数组的大小可能会有所不同 [ {'status':'init','count':1000}, {'status':'start','count':2500}, {'status':'done','count':1500} ] 需要获得以下格式的输出。基本上是数组中所有对象按键的百分比 [ {'status':'init','percentage':20}, {'status':'start','percentage':50},

下面是javascript中的对象数组。如果有任何新的
状态
键到达,数组的大小可能会有所不同

[
{'status':'init','count':1000},
{'status':'start','count':2500},
{'status':'done','count':1500}
]
需要获得以下格式的输出。基本上是数组中所有对象按键的百分比

[
{'status':'init','percentage':20},
{'status':'start','percentage':50},
{'status':'done','percentage':30}
]

任何帮助都将不胜感激。

您可以获得所有计数的总和,并生成具有百分比值的新对象

var data=[{status:'init',count:1000},{status:'start',count:2500},{status:'done',count:1500}],
sum=data.reduce((s,{count})=>s+count,0),
结果=data.map({status,count})=>({status,percentage:count*100/sum}));
控制台日志(结果)

.as-console-wrapper{max-height:100%!important;top:0;}
到目前为止您尝试了什么?两个步骤:首先循环元素并将所有计数相加以获得总数。然后在元素上循环,计算percentarge,并将
count
属性替换为
percentage
属性。只能添加状态吗?或者您可以修改/删除现有状态?是否始终为正数/整数?你能有多少状态?最大值是多少?
const myArr = [
   {'status':'init','count':1000},
   {'status':'start','count':2500},
   {'status':'done','count':1500}
]

const total = myArr.reduce((a,i)=> a + i.count ,0)

const final = myArr.map(e=> ({...e, percentage: e.count * 100 / total})