發現將對象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)
|
輸出結果:
原因:
我們遍歷json對象時(var json = { top: ‘400px’, width: ‘500px’, height: ‘300px’ };),在循環外面定義一個對象,用於保存分離的json對象。
解決方法:
每次循環的時候,新建一個對象
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)
|
結果: