Reputation: 785
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
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