簡體   English   中英

.length是否不是檢查Javascript中數組是否為空的正確方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM