将一个对象push到数组之中的几点问题

在项目开发中我们需要向意数组中添加对象:首先想到的是利用数组的api,----push

demo

var ar = [1,2,3]
var ar2 = [11,22,33]
var obj = { a : 0, b : 0 }
var myar = [];
for(var i = 0; i < 3; i ++)
{
obj.a = ar[i];
obj.b = ar2[i];
myar.push(obj)
}
alert(myar[0].a);  //3

alert(myar[1].a); //3

alert(myar[2].a); //3

为什么都是3呢??

分析:

因为obj这个对象实在for循环外面生成的,在每一的循环时,我们都是利用的同一个对象,因此会进行覆盖。

正确的做法:

var ar = [1,2,3]
var myar = [];
for(var i in ar)
{
obj2 = {a: ar[i], b:ar[i]}; //每次的循环都会新建一个对象
myar.push(obj2);
}
alert(myar[0].a) ;//1

alert(myar[1].a) ;//2

进一步的用法:

s.sure_user_list.forEach(function (item) {//遍历下一步审批人列表,添加新的内容
lastSort = lastSort + 1;//排序加1
;
/*
Idea_approval[Idea_approval.length-1]=[{
approval_company_user_id: item.id,
ideasid: Idea_approval[c_approval_i].approval.ideasid,
sort: lastSort
}];
*/
var obj={
approval_company_user_id: item.id,
ideasid: Idea_approval[c_approval_i].approval.ideasid,
sort: lastSort
}
Idea_approval.push({approval:obj});

});
原文地址:https://www.cnblogs.com/evaling/p/6654631.html