JS:數組中push對象,覆蓋問題


發現將對象push進數組,后面的值會覆蓋前面的值,最后輸出的都是最后一次的值。其實這一切都是引用數據類型惹的禍。
如果你也有類似問題,可以繼續看下去哦。
下面代碼模擬:
將json對象的每個鍵值對,單獨搞成對象,再賦值給數組,最后輸出數組。結果數組應該是有三個對象。(for-in用於對象遍歷)

 
1
2
3
4
5
6
7
8
var json = { top : '400px' , width: '500px' , height: '300px' };
var data = {};//在外面定義對象
var datas = [];
for ( key in json) {
     data. name = key ;
     datas.push(data);
}
console.log(datas)

輸出結果:
result

原因:
我們遍歷json對象時(var json = { top: ‘400px’, width: ‘500px’, height: ‘300px’ };),在循環外面定義一個對象,用於保存分離的json對象。

object

解決方法:
每次循環的時候,新建一個對象

 
1
2
3
4
5
6
7
8
var json = { top : '400px' , width: '500px' , height: '300px' };
var datas = [];
for ( key in json) {
     var data = {};//每次循環的時候,新建對象
     data. name = key ;
     datas.push(data);
}
console.log(datas)

object

結果:
result


免責聲明!

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



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