使用空对象循环遍历 Json 数组

用户6408607

我正在尝试从 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>');
                            
                    }); 
                    }
                
                });
});

JSON 数据文件

肖恩·权

如果您确实想要快速而肮脏的检查,只需进行一次或检查,以便在标题未定义的情况下设置默认值。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章