簡體   English   中英

檢查JSON對象是否為null的快捷方式

[英]Shortcut to check if JSON objects are null

我正在編寫代碼以解析JSON文件。 我想知道是否有捷徑來檢查任何對象是否為空並向每個對象返回“無信息”,這樣我就不必重復'+(item.xxx || 'No Information')+' 有這樣的捷徑嗎?

例如,我這樣做是為了檢查對象是否為空:

$(data.items).each(function (index, item) { 
    item_html +='<h3>'+item.title+'</h3><p>'+(item.description || 'No Information')+'<p>'+(item.date || 'No Information')+'<p>'+(item.source || 'No Information')+'<p>'+(item.month|| 'No Information')+';
}

還有更好的選擇嗎?

jQuery具有jQuery.isEmptyObject函數。

$(data.items).each(function (index, item) { 
    if (!jQuery.isEmptyObject(item)) {
        item_html +='<h3>'+item.title+'</h3<p>'+item.description+'<p>'+item.date+'<p>'+item.source+'<p>'+item.month+';
    }
}

檢查每個屬性以查看是否未定義仍然不是最壞的主意。 嘗試從html構建中var itemDate = item.date || "No Information";邏輯,例如var itemDate = item.date || "No Information"; var itemDate = item.date || "No Information";

您還會遇到一些HTML和Javascript語法錯誤。 關閉您的<p>標記,並在該行的末尾關閉您的字符串。

寫一個簡單的函數

function s(item){
    if (item==null){
        return "No Inofrmation";
    }else{
        return item;
    }
 }

用法

$(data.items).each(function (index, item) { 
item_html +='<h3>'+item.title+'</h3><p>'+s(item.description)+'<p>'+s(item.date)+'<p>'+s(item.source)+'<p>'+s(item.month)'</p>';
}

這可能是第一個版本:

var na = function(message, def){
  def || (def = 'No Information');
  return message || def;
};

$(data.items).each(function (index, item) { 
   item_html +='<h3>'+item.title+'</h3><p>'+
     na(item.description)+'<p>'+
     na(item.date)+'<p>'+
     na(item.source)+'<p>'+
     na(item.month)+'<p>'
}

盡管在數據源中執行此邏輯會更好,但是從哪里獲取data.items呢?

您還可以使用map命令對數組進行預處理。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map

var fields = ['title', 'field1', 'flield2'];
items.map(function(item){
    for(var f in fields){
        fn = fields[f];
        if(item[fn] == undefined || item[fn] == null){
            item[fn] = 'No Information';
        }
    }
});

這有點像“ hack”,但是您可以按原樣打印,然后替換所有未定義的事件:

$(data.items).each(function (index, item) { 
    item_html +='<h3>'+item.title+'</h3><p>'+item.description+'<p>'+item.date+'<p>'+item.source+'<p>'+item.month;
}

item_html.split(">undefined<").join(">No Information<");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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