user7035864
user7035864

Reputation:

How to loop json object in angularjs

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

Answers (4)

Supradeep
Supradeep

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

Peter Grainger
Peter Grainger

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

Avnesh Shakya
Avnesh Shakya

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

Related Questions