如何在数组javascript中添加对象

如何在数组javascript中添加对象,javascript,arrays,Javascript,Arrays,这是我的阵列: array = [ { animal: 'dog', leg: 4, age: 3 }, { animal: 'chicken', leg: 2, age: 2 }, { animal: 'egg'}, ]; 这是我想要的数组: desiredArray = [ { animal: 'dog', leg: 4, age: 3, sum: 7 }, { animal: 'chicken', leg: 2, age: 2, sum: 4 }, { ani

这是我的阵列:

array = [
  { animal: 'dog', leg: 4, age: 3 },
  { animal: 'chicken', leg: 2, age: 2  },
  { animal: 'egg'},
];
这是我想要的数组:

desiredArray = [
  { animal: 'dog', leg: 4, age: 3, sum: 7 },
  { animal: 'chicken', leg: 2, age: 2, sum: 4  },
  { animal: 'egg', sum: 0  },
];

我想给数组中的每个对象添加一个属性,它是腿和年龄的总和。如果leg或age为空,则其值为0。

请尝试使用一个,它将对您有效,并务必让我知道。我在这里使用array.map循环对象数组,然后使用结果值向对象添加一个新属性

Object.assign方法用于复制所有 从一个或多个源对象到目标对象的可枚举自身属性 对象它将返回目标对象

数组=[ {动物:'狗',腿:4岁,年龄:3}, {动物:'鸡',腿:2,年龄:2}, {动物:'蛋'}, ]; 结果数组=[] 数组的forvar项{ item['sum']=item?item中的'leg'。leg:0+item?item中的'age'。年龄:0 resultArray.pushitem } logresultArray您可以在每个循环中使用javascript

您可以使用函数并直接在纯javascript中这样做验证

常量数组=[ {动物:'狗',腿:4岁,年龄:3}, {动物:'鸡',腿:2,年龄:2}, {动物:'蛋'}, ]; const output=array.mapval=>{…val,sum:val.leg | | 0+val.age | | 0}; console.logoutput 常量数组=[ {动物:'狗',腿:4岁,年龄:3}, {动物:'鸡',腿:2,年龄:2}, {动物:'蛋'}, {动物:'特殊动物',腿:5}, ]; 常量getDesiredArray=array=>{ const desiredArray=array.map=>{ 如果是动物的腿,动物的年龄{ animal.sum=animal.leg | 0+animal.age | 0; }否则{ animal.sum=0; } 返回动物; } 返回所需阵列; }
console.loggetDesiredArrayarray 如果您有多个数据,那么您可以对其进行分解并使用reduce方法。以下是一个工作示例:

var数组=[{动物:'狗',腿:4,年龄:3},{动物:'鸡',腿:2,年龄:2},{动物:'蛋'}]; var result=array.map{animal,…rest}=>{animal,…rest,sum:Object.valuesrest.reduces,v=>s+v,0};
console.logresult 因为您在这段代码中使用了对象,所以我认为这段代码的最佳方法是JavaScript面向对象方法。使用这种方法,对象本身将具有sum属性。当您需要查看和值时,您所要做的就是调用它

我想你正在学习javascript,所以我在这里发布ES5和ES6代码

//ES5溶液 var Animal=函数animalName,leg=null,age=null,sum=null{ this.animalName=animalName; 这个腿=腿; 这个。年龄=年龄; this.sum=sum;//如果定义时不想赋值,可以将其设置为this.sum=null。 }; Animal.prototype.calcSum=函数{ 如果this.age==null | | this.leg===null{//我使用了null值,因为您提到了它。在javascript中,未定义的变量值是未定义的非null。如果您是指0或未定义的,您可以更改它。 此值为0.sum=0; }否则{ this.sum=this.leg+this.age; } }; var dog=新动物标记,4,3; var鸡=新的动物鸡,2,2; var egg=新的动物GG; var数组=[狗、鸡、蛋]; 数组[0].calcSum//这将更新dog对象中sum的值 数组[1]。calcSum//这将更新对象中sum的值 数组[2].calcSum//这将更新egg对象中sum的值 //ES6溶液 类动物{ 构造函数animalname,leg=null,age=null,sum=null{ this.animalName=animalName; 这个腿=腿; 这个。年龄=年龄; this.sum=sum; } 钙质{ 如果this.age==null | | this.leg===null{//我使用了null值,因为您提到了它。在javascript中,未定义的变量值是未定义的非null。如果您是指0或未定义的,您可以更改它。 此值为0.sum=0; }否则{ this.sum=this.leg+this.age; } }; } const dog=新动物,4,3; const鸡=新的动物鸡,2,2; 恒量蛋=新的动物; 让数组=[狗、鸡、蛋]; 数组[0].calcSum//这将更新dog对象中sum的值 数组[1]。calcSum//这将更新对象中sum的值
数组[2].calcSum//这将使用angular更新egg objectI am中的sum值,并表示由于tslint,TypeOpp上不存在属性sum。只需更改常量o:any=Object.assign{},el;。它会起作用的。请检查已编辑的解决方案。我已经在angular8平台上对其进行了测试。它返回0的和。预计是9。{动物:'蛋',腿:9},我已经更新了答案。它将在所有条件下工作。
const result = array.map((el) =>  {
  const o: any = Object.assign({}, el);
  o.sum = (el.leg || 0) + (el.age || 0)
  return o;
})
var array = [
      { animal: 'dog', leg: 4, age: 3 },
      { animal: 'chicken', leg: 2, age: 2  },
      { animal: 'egg'},
    ];
    $.each(array,function(k,v){
       var total=0;
        if(v.leg)
           total=v.leg;
        if(v.age)
           total=total+v.age     
        v.sum=total
    });
    console.log(array);