How to get filtered data from json with double loop
So I created this json file ( http://www.smartbustracking.be/json/data.json ) and now I can get the data. but I would like to achieve filtering data based on id with a for loop.
I can show one element of a specific id, but not all data related to that specific id.
So need to better understand what I am trying to explain, have a look at 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 out all data related to a specific id
+3
source to share
1 answer
If I understood you correctly, you need to add an extra 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/>");
}
}
jsfiddle update here https://jsfiddle.net/or4e8t3u/
+1
source to share