javaScript遍歷已知物件的屬性值顯示‘undefined’的問題
阿新 • • 發佈:2019-02-04
資料解析遇到到一個小問題,json格式的資料多層巢狀,大概長這樣,事實上結構比這個還複雜(為什麼這樣?我也不知道, 這要問已經不在的服務端的同志…..)
ex:
{
"data":[
{
"刑事":[4,0,0,0,0,0,0,0,0,0,0,0],
"火災":[0,0,0,0,0,0,0,0,0,0,0,0],
"治安":[2,0,0,0,0,0,0,0,0,0,0,0],
"交通":[3,0,0,0,0,0,0,0,0,0,0,0],
"求助":[2,0,0,0,0,0,0,0,0,0,0,0],
"其他":[0,0,0,0,0,0,0,0,0,0,0,0]
},
{
"time": {
"date ":22,
"day":5,
"hours":14,
"minutes":58,
"month":11,
"seconds":26,
"time":1513925906648,
"timezoneOffset":-480,
"year":117
}
}
]
}
想遍歷拿到物件中的陣列:
javaScript中,陣列可以用迴圈遍歷,但是最初用for迴圈遍歷物件,顯示undefined;
如:
for (var Key in res.data.data[0]){
console.log ( Key+':'+res.data.data[0].Key);
}
而以下就可以:
for (var Key in res.data.data[0]){
console.log( Key+':'+res.data.data[0][Key]);
}
for..in迴圈遍歷物件屬性,取值時應該這樣寫,obj[property]
這是為什麼呢?
因為property是變數,所以要用中括號,而不是取值。
obj.property取的是obj物件中,鍵為property的值,也就是obj的名為property的屬性值,因為不存在,所以沒拿到,就會打印出undefined
再如:
var data ={
'陰天':'15',
'晴天':'81',
'雨天':'12'
};
這樣:
for (var Key in data){
console.log( Key+':'+data[Key]);
}
以上可以在控制檯列印:
陰天:15
晴天:81
雨天:12
而以下就不行
for (var val in data){
console.log( val+':'+data.val]);
}
會在控制檯列印:
陰天:undefined
晴天:undefined
雨天:undefined