Reputation:
i'm using the tree component in my angular projet, i'm trying to loop a json object to populate the tree heres my code:
var myData=[{"agence":"CTM","secteur":"Safi","serie":"CZC1448YZN"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"Gare Routiere Municipale","secteur":"Essaouira","serie":"CZC145YL3"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AU2290Y48"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AUD14404X"}];
for(var i=0; i < myData.length; i++) {
// alert('roro '+myData[i].secteur);
treedata_avm = [{
label: myData[i].secteur,
children: [{
label: myData[i].agence,
children: [myData[i].serie]
}]
}];
}
My problem is, i got only the last line in the json object which is {"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AUD14404X"}
how i can get all the data displayed in the tree???
Upvotes: 2
Views: 4214
Reputation: 3266
You are replacing the previous value in treedata-avm
instead of adding the new one into it. What you can do is, define an empty array treedata_avm
and push each object in myData
into it by iterating which you are already doing.
var myData=[{"agence":"CTM","secteur":"Safi","serie":"CZC1448YZN"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"Gare Routiere Municipale","secteur":"Essaouira","serie":"CZC145YL3"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AU2290Y48"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AUD14404X"}];
var treedata_avm = [];
for(var i=0; i < myData.length; i++) {
// alert('roro '+myData[i].secteur);
treedata_avm.push({
label: myData[i].secteur,
children: [{
label: myData[i].agence,
children: [myData[i].serie]
}]
});
}
console.log(treedata_avm);
Upvotes: 1
Reputation: 5097
You can also use the map function, which is functional and a little less error prone https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Array/map
var treedata_avm = myData.map(function(value) {
return {
label: myData[i].secteur,
children: [{
label: myData[i].agence,
children: [myData[i].serie]
}]
}
})
Upvotes: 0
Reputation: 3906
Try this:
var treedata_avm = [];
for (var i = 0; i < myData.length; i++) {
treedata_avm.push({
label: myData[i].secteur,
children: [{
label: myData[i].agence,
children: [myData[i].serie]
}]
});
}
Using .push()
. will work for you.
Upvotes: 0
Reputation: 11
var myData=[{"agence":"CTM","secteur":"Safi","serie":"CZC1448YZN"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Safi","serie":"2UA13817KT"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"CTM","secteur":"Essaouira","serie":"CZC1221B85"},{"agence":"Gare Routiere Municipale","secteur":"Essaouira","serie":"CZC145YL3"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AU2290Y48"},{"agence":"Gare Routiere Avenue des FAR CTM","secteur":"Casablanca","serie":"2AUD14404X"}];
var treedata_avm = [];
for(var i=0; i < myData.length; i++) {
// alert('roro '+myData[i].secteur);
treedata_avm.push({
label: myData[i].secteur,
children: [{
label: myData[i].agence,
children: [myData[i].serie]
})
}];
}
you should use array function 'push' to push the object to the new array; but not use the '=';
Upvotes: 0