javascript - 同じ関数でjqueryの異なるレベルのネストされたJSON値にアクセスする

原文 javascript jquery json object nested

私が達成しようとしていること:
1. 2つのドロップダウンリストと送信ボタンのあるページ。
2.ユーザーが一方または両方のドロップリストの値を選択し、送信をクリックしたとき。
3.システムはJSONファイル(Facebook Graph APIから抽出)をチェックし、ドロップリストで選択された値で結果を表示します

私の問題:
親>子であるネストされたオブジェクトにアクセスすることはできますが、より深いレベルにアクセスするときにアクセスする方法を理解するのに問題があります。
私の問題は$ .getJSON内のifステートメントだと思います
val.genre.searchしかない場合はコードが機能しますが、深くネストされている場所の検索を追加すると機能しません。
これについて何か助けていただければ幸いです。

ここに私のJSがあります:

<script>
$(window).load(function(){
        $('#submit').click(function(e){
            e.preventDefault();
            var searchGenre = $('#genreList').val();
            var regexGenre = new RegExp(searchGenre, "i");

            var searchCity = $('#cityList').val();
            var regexCity = new RegExp(searchCity, "i");

            var output = '<div class="row">';
            var count = 1;
            $.getJSON('mylist.json', function(data) {
              $.each(data.data, function(key, val){
                if ((val.genre.search(regexGenre) != -1) && (val.place.location.city.search(regexCity) != -1) 

                )  {
                  output += '<div class="col-md-6 well">';
                  output += '<div class="col-md-3"><img class="img-responsive" src="'+val.cover.source+'" alt="'+ val.name +'" /></div>';
                  output += '<div class="col-md-7">';
                  output += '<h5>' + val.name + '</h5>';
                  output += '<p>' + val.place.location.city + '</p>'
                  output += '</div>';
                  output += '</div>';
                  if(count%2 == 0){
                    output += '</div><div class="row">'
                  }
                  count++;
                }
                else{
                console.log('no results');
                }
              });
              output += '</div>';
              $('#container').html(output);
            }); 
        });
      });

</script>


次に、フォームセクションのHTML:

<form>
    <select id="genreList" placeholder="Choose">
      <option value="">Choose below</option>
      <option value="techno">Techno</option>
      <option value="deephouse">Deep House</option>
      <option value="house">House</option> 
    </select>

    <select id="cityList" placeholder="Choose">
      <option value="">Choose below</option>
      <option value="amsterdam">amsterdam</option>
      <option value="NY">NY</option>
      <option value="new york">new york</option>
    </select>

    <input id="submit" type="submit" value="Submit" >

</form> 


そして私のJSON:

{
  "data": [    


    {
      "name": "DWFTW // INVITES Alex Adair 28/05", 
      "start_time": "2015-05-28T23:00:00+0200", 
      "id": "298271357013340", 
      "genre": "techno",
    "description": "♫ DON'T WAIT FOR THE WEEKEND INVITES Alex Adair!", 
      "cover": {
        "cover_id": "654746394655495", 
        "offset_x": 0, 
        "offset_y": 0, 
        "source": "https://scontent.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/s720x720/10982689_654746394655495_7090395118806704969_n.jpg?oh=8a6b6bb0eba8baa61e163aa6ae6ecf3a&oe=5606EEAF", 
        "id": "654746394655495"
      }, 
      "owner": {
        "category": "Arts/Entertainment/Nightlife", 
        "name": "Don't Wait For The Weekend", 
        "id": "529203590543110"
      }, 
      "place": {
        "name": "Amstelstraat 24, 1017 DA"
         "location": {
          "city": "NY", 
          "country": "Netherlands", 
          "latitude": 52.366131578049, 
          "longitude": 4.8990026847357, 
          "street": "Amstelstraat 16", 
          "zip": "1017 DA"
        }, 
        "id": "331458207061116"
      }
    }, 
    {
      "name": "LET'S KETCHUP | EVERY SUNDAY | AIR AMSTERDAM", 
      "start_time": "2015-05-24T23:30:00+0200", 
      "id": "1596148173931181", 
      "genre": "techno",
    "description": "LET'S KETCHUP EVERY SUNDAY AT AIR AMSTERDAM!", 
      "cover": {
        "cover_id": "495622693918034", 
        "offset_x": 0, 
        "offset_y": 0, 
        "source": "https://scontent.xx.fbcdn.net/hphotos-xaf1/v/t1.0-9/s720x720/11055730_495622693918034_2744471195546137356_n.jpg?oh=031c47906450b23a74b69625376fdcc9&oe=55F1DAC2", 
        "id": "495622693918034"
      }, 
      "owner": {
        "category": "Event Planning/Event Services", 
        "category_list": [
          {
            "id": "192119584190796", 
            "name": "Event"
          }
        ], 
        "name": "Ketchup", 
        "id": "331458207061116"
      }, 
      "place": {
        "name": "Ketchup", 
        "location": {
          "city": "NY", 
          "country": "Netherlands", 
          "latitude": 52.366131578049, 
          "longitude": 4.8990026847357, 
          "street": "Amstelstraat 16", 
          "zip": "1017 DA"
        }, 
        "id": "331458207061116"
      }
    }, 
    {
      "name": "Pacha Festival official afterparty", 
      "start_time": "2015-05-23T23:00:00+0200", 
      "id": "649599681853451", 
      "genre": "deep house",
    "description": "PACHA FESTIVAL OFFICAL AFTER PARTY @ AIR Amsterdam\n\n", 
      "cover": {
        "cover_id": "804183476297247", 
        "offset_x": 7, 
        "offset_y": 0, 
        "source": "https://scontent.xx.fbcdn.net/hphotos-xta1/t31.0-8/s720x720/11133876_804183476297247_5088820164370346139_o.jpg", 
        "id": "804183476297247"
      }, 
      "owner": {
        "category": "Arts/Entertainment/Nightlife", 
        "category_list": [
          {
            "id": "133436743388217", 
            "name": "Arts & Entertainment"
          }, 
          {
            "id": "192119584190796", 
            "name": "Event"
          }
        ], 
        "name": "Pacha Festival", 
        "id": "250375795011354"
      }, 
      "place": {
        "name": "AIR Amsterdam", 
        "location": {
          "city": "Amsterdam", 
          "country": "Netherlands", 
          "latitude": 52.366262827569, 
          "longitude": 4.898927791647, 
          "street": "Amstelstraat 24", 
          "zip": "1017 DA"
        }, 
        "id": "109020085791036"
      }
    }
  ], 
  "paging": {
    "cursors": {
      "before": "MTQyMTM2MTgzODE2NjU5Mg==", 
      "after": "NjQ5NTk5NjgxODUzNDUx"
    }, 
    "next": "https://graph.facebook.com/v2.3/109020085791036/events?pretty=0&fields=name,start_time,id,description,cover,owner,place&limit=25&after=NjQ5NTk5NjgxODUzNDUx"
  }
}
答え
http://jsbin.com/buxotecowa/1/コードに構文エラーが含まれていないことを確認してください(jsにセミコロンがなく、jsonにコロンがない)。
関連記事

javascript - 透明なHTML / CSSボタンから見えない?

javascript - keypressイベントの入力フィールドにスペースを入れない

javascript - クリックしても、Jsonからのチェックボックスにアラートが表示されない

javascript - 1つのクラスへのCSS追加の疑似要素(前、後、+その他)

javascript - JSTreeからチェックIDを取得-Get_Checkedはノードを検出しますが、IDは検出しません

javascript - 個別のボタンのブートストラップのクリックでモーダル内のナビゲーションタブのアクティブクラスを変更しようとしています

javascript - 関数のパラメーターで既に参照されているグローバル変数を参照する方法は?

javascript - スライドショーにエフェクトを追加できません

javascript - 日付ピッカーの問題の発生

javascript - POSTでJQueryに配列を渡し、Flaskでそれを読み取る