如何在数组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);