Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算百分比,而不是总和_Javascript_Arrays_Object - Fatal编程技术网

Javascript 计算百分比,而不是总和

Javascript 计算百分比,而不是总和,javascript,arrays,object,Javascript,Arrays,Object,实际上,我的函数计算每个对象中所有相同键的总和 const arr = [{id:1, "my color":1,"my fruit":4},{id:2,"my color":2,"my fruit":4}]; const res = arr.reduce((a, { id, ...rest }) => { Object.entries(rest).forEach(([key, val]) => { a[key] = (a[key] || 0) + val; });

实际上,我的函数计算每个对象中所有相同键的总和

const arr = [{id:1, "my color":1,"my fruit":4},{id:2,"my color":2,"my fruit":4}];

const res = arr.reduce((a, { id, ...rest }) => {
  Object.entries(rest).forEach(([key, val]) => {
    a[key] = (a[key] || 0) + val;
  });
  return a;
}, {});

result is >> [{"my color":3,"my fruit":8}
我想得到它们的百分比(值/值之和),而不是它们的和,像这样


{“我的颜色”:27,“我的水果”:73}

首先将所有值相加,然后将每个条目除以:

// Sum up all properties with same key
const sum = { };

for(const entry of array) {
  for(const [key, value] of Object.entries(entry)) {
     sum[key] = (sum[key] || 0) + value;
  }
}

// Map the array to an array of percentages   
const percentage = array.map(entry => {
  const result = {};
  for(const [key, value] of Object.entries(entry)) {
     result[key] = value / sum[key] * 100;
  }
  return result;
});
试着跟随

var obj={“我的颜色”:3,“我的水果”:8};
var total=对象值(obj).reduce((a,c)=>a+c,0);
Object.keys(obj.forEach)(k=>obj[k]=Math.round(obj[k]*100/总计));

控制台日志(obj)不清楚你在问什么。请你再解释一下。在你的结果中,把所有的值加起来。然后将每个值更改为
值*100/sum
。基础数学。