Javascript 如何从对象键数组计算剩余值?

Javascript 如何从对象键数组计算剩余值?,javascript,Javascript,我有一个对象数组,用于输入ngx饼图,我必须计算值的总和,并形成一个具有剩余值的对象 a = [{name: "a", value: 50} {name: "b", value: 20} {name: "c", value: 0} {name: "d", value: 10}] 50+20+0+10 = 80 default = 100 - 80 = 20; result = [{na

我有一个对象数组,用于输入ngx饼图,我必须计算值的总和,并形成一个具有剩余值的对象

a = [{name: "a", value: 50}
    {name: "b", value: 20}
    {name: "c", value: 0}
    {name: "d", value: 10}]

50+20+0+10 = 80
default = 100 - 80 = 20;

  result = [{name: "a", value: 50},
             {name: "b", value: 20},
             {name: "c", value: 0},
             {name: "d", value: 10},
             {name: "default", value: 20}]



   a.map(el => {        
    sum = sum + el.value;
    });
 default = 100 - sum;
a.push({name: 'default', value: default})

您应该使用reduce而不是map

const a=[
{名称:“a”,值:50},
{名称:“b”,值:20},
{name:“c”,值:0},
{名称:“d”,值:10}
];
常数def=100-a.reduce((acc,el)=>acc=acc+el.value,0);
a、 推送({name:'default',value:def})

console.log(a)
您应该使用reduce而不是map

const a=[
{名称:“a”,值:50},
{名称:“b”,值:20},
{name:“c”,值:0},
{名称:“d”,值:10}
];
常数def=100-a.reduce((acc,el)=>acc=acc+el.value,0);
a、 推送({name:'default',value:def})
console.log(a)
我会这样做:

const a=[
{名称:“a”,值:50},
{名称:“b”,值:20},
{name:“c”,值:0},
{名称:“d”,值:10}
];
const result=[…a,{name:“default”,值:100-a.reduce((acc,cur)=>acc=acc+cur.value,0)}]
控制台日志(结果)我会这样做:

const a=[
{名称:“a”,值:50},
{名称:“b”,值:20},
{name:“c”,值:0},
{名称:“d”,值:10}
];
const result=[…a,{name:“default”,值:100-a.reduce((acc,cur)=>acc=acc+cur.value,0)}]

控制台日志(结果)简单而优雅的答案

const a = [{name: "a", value: 50},
    {name: "b", value: 20},
    {name: "c", value: 0},
    {name: "d", value: 10}]

const expectedResult = [{name: "a", value: 50},
             {name: "b", value: 20},
             {name: "c", value: 0},
             {name: "d", value: 10},
             {name: "default", value: 20}]

a.push(
    {
        name: "default",
        value: 100 - a.reduce((acc, curr) => (acc + curr.value), 0)
    }
);

console.log(a)

简单而优雅的回答

const a = [{name: "a", value: 50},
    {name: "b", value: 20},
    {name: "c", value: 0},
    {name: "d", value: 10}]

const expectedResult = [{name: "a", value: 50},
             {name: "b", value: 20},
             {name: "c", value: 0},
             {name: "d", value: 10},
             {name: "default", value: 20}]

a.push(
    {
        name: "default",
        value: 100 - a.reduce((acc, curr) => (acc + curr.value), 0)
    }
);

console.log(a)
这会奏效的

  

    let a = [
        { name: "a", value: 50 },
        { name: "b", value: 20 },
        { name: "c", value: 0 },
        { name: "d", value: 10 },
      ];
    
      let sum = 0;
    
      a.map((el) => {
        sum += el.value;
      });
    
      const result= 100 - sum;
     
      const newValueToAdd= {
          name: "default",
          value: result,
       };
    
        a.push(newValueToAdd);
    
这会奏效的

  

    let a = [
        { name: "a", value: 50 },
        { name: "b", value: 20 },
        { name: "c", value: 0 },
        { name: "d", value: 10 },
      ];
    
      let sum = 0;
    
      a.map((el) => {
        sum += el.value;
      });
    
      const result= 100 - sum;
     
      const newValueToAdd= {
          name: "default",
          value: result,
       };
    
        a.push(newValueToAdd);
    
“default”是javascript中的保留关键字,您应该避免使用它。“default”是javascript中的保留关键字,您应该避免使用它。