Arief Grando
Arief Grando

Reputation: 209

AngularJS count JSON array

Please help me, I have angularJS code like this :

.state('masterpegawai.alltalenta', {
            url: '/alltalenta',
            templateUrl: 'public/js/partial-masterpegawai-alltalenta.html',
            controller:function($scope,$http,$interval){
                    $http.get('http://10.16.107.77:3000/allhistorytalenta').success(function(data){

                        $scope.listtalentapegawai=data;

                    });
            }
        })

That produce JSON like this :

[{
    "nip": "6080022A",
    "nama": "ASLAN PURNAMA",
    "semester1_2012": null,
    "semester2_2012": null,
    "semester1_2013": null,
    "semester2_2013": null,
    "semester1_2014": null,
    "semester2_2014": "Potensial",
    "semester1_2015": null
}, {
    "nip": "6080022A",
    "nama": "ASLAN PURNAMA",
    "semester1_2012": null,
    "semester2_2012": null,
    "semester1_2013": null,
    "semester2_2013": null,
    "semester1_2014": null,
    "semester2_2014": null,
    "semester1_2015": "Potensial"
}, {
    "nip": "6080038A",
    "nama": "SYAIFUL ANWAR",
    "semester1_2012": null,
    "semester2_2012": null,
    "semester1_2013": null,
    "semester2_2013": null,
    "semester1_2014": null,
    "semester2_2014": "Potensial",
    "semester1_2015": null
}, {
    "nip": "6080038A",
    "nama": "SYAIFUL ANWAR",
    "semester1_2012": null,
    "semester2_2012": null,
    "semester1_2013": null,
    "semester2_2013": null,
    "semester1_2014": null,
    "semester2_2014": null,
    "semester1_2015": "Potensial"
}, {
    "nip": "6080048A",
    "nama": "NURHAYATI",
    "semester1_2012": null,
    "semester2_2012": null,
    "semester1_2013": "Potensial",
    "semester2_2013": null,
    "semester1_2014": null,
    "semester2_2014": null,
    "semester1_2015": null
}]

I Would like to count the array key and my final result should be 9

because each array contain 9 keys

"nip",
"nama",
"semester1_2012",
"semester2_2012",
"semester1_2013",
"semester2_2013",
"semester1_2014",
"semester2_2014",
"semester1_2015"

I am new to AngularJS and have try length method but the result always greater than 9 because it counts the entire JSON

Upvotes: 3

Views: 1625

Answers (1)

Alvaro Silvino
Alvaro Silvino

Reputation: 9763

You can use the function Object.keys

var length = 0;    

Object.keys(o).forEach(function(key) {
              var val = o[key];
             length = length + 1;

    });

Where o is any object.

In your case o should be any object of the array $scope.listtalentapegawai .

If you only want the Length you can do just like:

var length = Object.keys(o).length;

EDIT: your examples

.state('masterpegawai.alltalenta', {
            url: '/alltalenta',
            templateUrl: 'public/js/partial-masterpegawai-alltalenta.html',
            controller:function($scope,$http,$interval){
                    $http.get('http://10.16.107.77:3000/allhistorytalenta').success(function(data){

                        $scope.listtalentapegawai=data;

         var length = Object.keys($scope.listtalentapegawai[0]).length; // will be 9


                    });
            }
        })

Upvotes: 4

Related Questions