將一個對象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});

});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM