[英]How to avoid undefined in object key with no value?
我正在嘗試迭代這樣的對象:
0: Object
appointments: Array[2]
unavailables: Array[2]
0: Object
1: Object
book_datetime: "2015-10-22 02:46:23"
data: "0"
end_datetime: "2015-10-22 13:00:00"
hash: null
id: "21"
id_google_calendar: null
id_services: null
id_users_customer: null
id_users_provider: "87"
is_unavailable: "1"
notes: "Nessuna"
resource_id: "0"
start_datetime: "2015-10-22 12:00:00"
__proto__: Object
length: 2
__proto__: Array[0]
__proto__: Object
1: Object
appointments: Array[1]
unavailables: Array[0]
length: 0
__proto__: Array[0]
__proto__: Object
length: 2
__proto__: Array[0]
通過這種方式:
$.each(response, function(_, obj)
{
$.each(obj, function(key, val)
{
if (key === 'unavailables')
{
console.log("=> ", val[0]['id']);
}
});
});
現在一切正常,但你怎么看第二個數組包含unavailables length = 0
,當循環在這里我得到
無法讀取未定義的屬性“id”
怎么能避免這個? 有一種方法可以檢查當前密鑰是否包含值?
我可能會在訪問val
之前再去檢查一下:
if (key === 'unavailables' && val && val.length)
{
console.log("=> ", val[0]['id']);
}
您可以嘗試以下方法。 如果val[0]
不存在,它將被替換為空哈希,它將以undefined
響應['id']
(但避免錯誤。)
(val[0] || {})['id']
嘗試檢查val[0]['id'])
存在:
if (key === 'unavailables' && val[0]['id'])){
}
檢查val
的length
屬性是否如此
if (val.length > 0) {
console.log("=> ", val[0]['id']);
} else {
// contains no value
}
現有的答案有效,但我想指出你的方法不是最優的事實:你迭代所有obj
的所有屬性。
事實上你不需要這樣做; 您可以直接訪問unavailables
屬性。 因此,您的整個代碼可以簡化為:
$.each(response, function(_, obj)
{
var val = obj.unavailables;
if (val && val[0]) {
console.log("=> ", val[0].id);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.