2017-03-16 10 views
0

JSON配列からすべてのカテゴリタイトルを取得しようとしています。しかし、すべてのオブジェクトにカテゴリがあるわけではありません。このため、データを追加しようとすると、私は未定義になり、残りのデータはこのために追加されません。空のオブジェクトでJson Arrayをループする

Jsonファイルにカテゴリがない場合、カテゴリをデフォルトカテゴリに指定したいと考えています。または、タグのタイトルを取ってカテゴリにしてください。

私はいくつかの方法を試みましたが、どれもうまくいかないようです。 JSONファイルへのダウンロードリンクとともに、私がこれまで行ってきたことを下に抜粋しました。私はProblemAreaのコメントを私が試していたことを示すために置いた。

助けていただけたら幸いです!

CODE - あなたは本当に迅速かつ汚いチェックをしたい場合は、単に持っているか、確認してくださいので、タイトルがある場合は、デフォルト値を設定することができます

$("#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 Data File

+0

jsonの構造 –

答えて

0

未定義。

var cat = item.categories[0].title || "default value" 

そして、あなたは本当にたくは船外に行けば:あなたは、単純なif文でこれをきれいにすることができる

var cat = (item && item.categories && item.categories[0] && item.categories[0].title) || "default value" 

。いくつかの未定義チェックを実証しようとしています。

+0

を再作成するために 'yourArray.map()'を使うことができます。もしその2番目のルートを下るなら、おそらくitem.categories.lengthもチェックする必要があります。 –

+0

いいえ、それはありません。 https://jsfiddle.net/v1qg7vv4/ –

+0

あなたは正しいです、なぜ私はそれを考えたのか分かりません。たぶんそれは別の言語になっていた... –

関連する問題