我正在尝试从JSON数组中获取所有类别标题。但并非所有对象都有类别。因此,当我尝试附加数据时,我一直未定义,因此没有附加其余的数据。
如果Json文件中没有,我想以某种方式给类别一个默认类别。或者甚至把标签的标题作为类别。
我尝试过几种方法,但似乎都没有。我已经制作了一个截至目前为止的内容,以及JSON文件的下载链接。我已经发布了一个 ProblemArea 评论来向您展示我的尝试。
任何帮助将不胜感激!
代码 -
$("#search-btn").click(function (e) {
var userText = $.trim($('#searchArea').val());
$('.full-post-img').css('display', 'none');
$('.overlay-hugeinc').css('left', '-9999px');
$.getJSON('http://www.capetownetc.com/api/get_search_results/?search=' + userText, {
srsearch: userText
, action: "query"
, list: "search"
, format: "json",
},
function (data) {
$("#searchR").empty().append('<p class="results">RESULTS</p>');
if(userText.length === 0){
$("#searchR").empty().append("<p class='results'>Please enter a keyword</p>");
$('#sLoad').css('opacity', '0');
}
else{
$("#swipe").empty();
$.each(data.posts, function (i, item) {
// $('#sLoad').css('opacity', '0');
//EXCERPT
var ex = item.excerpt;
var maxLength = 100;
ex = ex.substr(0, maxLength);
//THUMBNAIL
var imgThumb1 = item.thumbnail_images.full.url;
//****PROBLEM AREA****
//CATEGORY
var cat = item.categories[0].title;
if(cat.hasOwnProperty(i)){
console.log('Is valid');
}
console.log(cat);
$("#swipe").append('<div class="p1 full-post-text"><a class="p1 link-click" id="post2" target="_blank"></a><div class="p1 text-post-img"><span class="p1 card-img1" id="p1Img" style="background-image:url(' + imgThumb1 + ');"></span><a class="p1 post-cat">' + cat + '</a> </div><div class="p1 full-text-info"><h2 class="p1 text-heading" id="p1Heading">' + item.title + '</h2><p class="p1 text-post-desc" id="p1Desc">' + ex + '</p><p class="p1 post-source" id="p1Source"> / </p></div></div>');
});
}
});
});
答案 0 :(得分:0)
如果你真的想要一个快速和脏的检查,只需要一个or-check,这样你就可以设置一个默认值,如果title是未定义的。
var cat = item.categories[0].title || "default value"
如果你真的想过火:
var cat = (item && item.categories && item.categories[0] && item.categories[0].title) || "default value"
您可以使用简单的if语句清除它。只是试图展示几个未定义的检查。