[英]Is not `.length` the right way to check whether an array is empty or not in Javascript?
我有以下AJAX呼叫:
$('#fileupload').show().fileupload({
url: '/upload',
type: "POST",
cache: false,
dataType: 'json',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
done: function (e, data) {
var error_msg = $("#load_error_msg");
error_msg.html('');
if (data.result.error.length > 0) {
// process errors messages here
} else {
// do something else
}
},
})
后端的upload方法返回一個JSON,如下所示:
{
"error": {
"fileUploadErrorIniSize": "File '' exceeds the defined ini size"
}
}
代碼將繞過此檢查data.result.error.length
並始終通過else
條件。
我在這一點上感到困惑: .length
不是檢查Javascript中數組是否為空的正確方法嗎? 如果不是,那是正確的方法?
它不是數組,而是一個普通對象。 普通對象默認情況下沒有length
屬性。
您可以使用Object.keys(data.result.error).length
來查看它是否具有自己的示例性實例可枚舉的屬性。
例如,假設data.result
確實指向該數據結構,則:
if (Object.keys(data.result.error).length > 0) {
如果有可能data.result
根本沒有error
屬性,則需要注意以下data.result
:
if (data.result.error && Object.keys(data.result.error).length > 0) {
但是,如果您知道它會一直存在(有時只是空的),則沒有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.