Christian-G
Christian-G

Reputation: 2361

Sum of values from array of objects

I have a javascript matrix array with the following structure (the first index is x, the second index is y, so every x item has 4 y items):

0 
  0 { x: 0, y: 0, z: 0}
  1 { x: 0, y: 1, z: 5}
  2 { x: 0, y: 2, z: 0}
  3 { x: 0, y: 3, z: 1}
1
  0 { x: 1, y: 0, z: 4}
  1 { x: 1, y: 1, z: 5}
  2 { x: 1, y: 2, z: 1}
  3 { x: 1, y: 3, z: 8}

What I need to do is get an array that stores the z values per y value. So for all the values of x I need the total values of z arranged by y. The structure I am looking for (assuming 4 y values)

0 4
1 10
2 1
3 9

I tried this:

count = [];
    $.each(matrix, function(i, j) {
      $.each(j, function(k, v) {
        count[k] += v["z"];
      })          
    });

But this returns just an array with NaN values. Does anyone have better suggestions?

Upvotes: 0

Views: 90

Answers (2)

Pranav C Balan
Pranav C Balan

Reputation: 115222

You need to initialize count array

var count=[ 0, 0, 0, 0];
$.each(matrix, function(i, j) {
  $.each(j, function(k, v) {
    count[k] += parseInt(v["z"],10);
  })          
});

Upvotes: 1

Erdogan Kurtur
Erdogan Kurtur

Reputation: 3685

Your count array is not initialized, and you are trying to do math with undefined, so your result is NaN. Initialize count array with zeros.

Upvotes: 0

Related Questions