0

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?

Christian-G
  • 2,371
  • 4
  • 27
  • 47

2 Answers2

1

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);
  })          
});
Pranav C Balan
  • 113,687
  • 23
  • 165
  • 188
  • Great, now could I initialize the `count` automatically with the length of the `y` array? So that I don't have to enter another `0` if the `y` array gains an item? – Christian-G Sep 15 '14 at 11:26
  • Never mind, I came across this: http://stackoverflow.com/questions/1295584/most-efficient-way-to-create-a-zero-filled-javascript-array – Christian-G Sep 15 '14 at 11:34
0

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.

Erdogan Kurtur
  • 3,630
  • 21
  • 39