我正在尝试从 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>');
});
}
});
});
如果您确实想要快速而肮脏的检查,只需进行一次或检查,以便在标题未定义的情况下设置默认值。
var cat = item.categories[0].title || "default value"
如果你真的想过火:
var cat = (item && item.categories && item.categories[0] && item.categories[0].title) || "default value"
你可以用一个简单的 if 语句来清理它。只是想演示几个未定义的检查。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句