MrD
MrD

Reputation: 5084

Javascript can't convert undefined to object

I have the following code

for(i = 0; i < num; i++) {
    var yPos = 10*i;
    var numCells = wid/30;

    for(j = 0; j < numCells; j++) {
        blocks[i][j] = 1;
    }                       
}

With

blocks = new Array();

However, when I execute the code I receive an error stating that:

can't convert undefined to object

Any ideas? :/

Upvotes: 1

Views: 7052

Answers (2)

Stuart
Stuart

Reputation: 9868

In your particular case, since all the rows are initialised to be the same (a series of 1s), you can also do

var blocks = new Array(),
    blockRow = new Array();
for (var i = 0; i < numCells; i++) {
    blockRow.push(1);
}
for (var i = 0; i < num; i++) {
    blocks.push(blockRow.slice());  // slice() makes a copy of blockRow
}

Upvotes: 0

Michael Malinovskij
Michael Malinovskij

Reputation: 1422

var blocks = [];
for(i = 0; i < num; i++) {    
    var yPos = 10*i;
    var numCells = wid/30;
    blocks[i] = []; // here is a fix

    for(j = 0; j < numCells; j++) {
        blocks[i][j] = 1;
    }
}

Upvotes: 4

Related Questions