GY22
GY22

Reputation: 785

How to retrieve filtered data from json with double for loop

So i have build up this json file (http://www.smartbustracking.be/json/data.json) and now i am able to retrieve data. but what i would like to achieve is to filter data based on id with a for loop.

i am able to show one item of a specific id but not all the data related to that specific id.

So have to have a better understanding of what i am trying to explain see the code via jsfiddle -> https://jsfiddle.net/r4gkw1w8/1/

var json= [  
  {  
    "id":"1",
    "longitude":"4.420556809486086",
    "latitude":"51.21703476701095",
    "description":"Station van Mechelen",
    "busnummer":"14",
    "name":"Station Mechelen",
    "busuur":"14:45",
    "bussen":[  
      {  
        "busnummer":"530",
        "busnaam":"Aarshot - Tremelo - Keerbergen - Mechelen",
        "bushaltes":[  
          {  
            "bushalte":"Zandpoortvest",
            "aankomstuur":"17:40"
          },
          {  
            "bushalte":"Raghenoplein",
            "aankomstuur":"17:45"
          },
          {  
            "bushalte":"Station perron 13",
            "aankomstuur":"17:52"
          }
        ]
      },
      {  
        "busnummer":"55",
        "busnaam":"Test - Test - Test",
        "bushaltes":[  
          {  
            "bushalte":"Test 1",
            "aankomstuur":"16:40"
          },
          {  
            "bushalte":"Test 2",
            "aankomstuur":"16:45"
          },
          {  
            "bushalte":"Test 3 perron 13",
            "aankomstuur":"16:52"
          }
        ]
      }
    ]
  },
  {  
    "id":"2",
    "longitude":"4.421180",
    "latitude":"51.216227",
    "description":"Station van Mechelen",
    "busnummer":"180",
    "name":"Station antwerpen",
    "busuur":"14:45",
    "bussen":[  
      {  
        "busnummer":"630",
        "busnaam":"Busnaam 1 ID 2",
        "bushaltes":[  
          {  
            "bushalte":"dafas",
            "aankomstuur":"14:40"
          },
          {  
            "bushalte":"fadas",
            "aankomstuur":"14:45"
          },
          {  
            "bushalte":"afdas perron 13",
            "aankomstuur":"14:52"
          }
        ]
      },
      {  
        "busnummer":"660",
        "busnaam":"Busnaam 2 ID 2",
        "bushaltes":[  
          {  
            "bushalte":"Test 1",
            "aankomstuur":"13:40"
          },
          {  
            "bushalte":"Test 2",
            "aankomstuur":"13:45"
          },
          {  
            "bushalte":"Test 3 perron 13",
            "aankomstuur":"13:52"
          }
        ]
      }
    ]
  }
];



 var bushalte2=$(json).filter(function (i,field){return field.id==2;});


for (var i=0;i<bushalte2.length;i++)
  {
    $("#bussen").append(bushalte2[i].name + "<br/>");
    $("#bussen").append(bushalte2[i].bussen[i].busnummer);      



}

So what i basically want is to filter all the data related to a specific id

Upvotes: 3

Views: 213

Answers (1)

Aleksandar Gajic
Aleksandar Gajic

Reputation: 1359

If i understood you correctly, you need to add additional for loop for all bussen

for (var i=0;i<bushalte2.length;i++)
  {
    $("#bussen").append(bushalte2[i].name + "<br/>");
      for (var j=0; j <bushalte2[i].bussen.length; j++) {
        $("#bussen").append(bushalte2[i].bussen[j].busnummer + "<br/>");        
      }    
}

here is updated jsfiddle https://jsfiddle.net/or4e8t3u/

Upvotes: 1

Related Questions