Quiero crear una matriz multidimensional como esta:

array[0][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
array[1][21,22,23,24,25,26,27....]
array[.][....]

¿Cómo puedo hacer esto en Javascript?

He probado esto:

var squares = new Array();
        for(var i = 1; i <= 8; i++)
        {
            for(var j = 1; j <= 20; j++)
            {
                squares.push(i, j);     
            }

        }

¿Cómo puedo lograrlo?

0
user500468 1 sep. 2014 a las 18:17

4 respuestas

La mejor respuesta

Puedes hacer algo como esto:

var squares = new Array();
for(var i = 0; i <= 8; i++)
{
    squares[i] = new Array();
    for(var j = (i * 20) + 1; j <= 20 * i + 20; j++)
        if (squares[i] == null)
            squares[i] = j;
        else
            squares[i].push(j);
}

La salida viene como:

array[0][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
array[1][21,22,23,24,25,26,27....]
2
Praveen Kumar Purushothaman 2 sep. 2014 a las 10:15

Utilice el operando de módulo para limitar el tamaño de la matriz interna

var limit = 80
var inner_limit = 20
var square=[]
var inner =[]
for(var i=1;i<=limit;i++){
    inner.push(i)        
    if(i%inner_limit==0){
        square.push(inner)
        inner = []
    }

}
0
xecgr 1 sep. 2014 a las 14:34
var array = []; // Main array
var numArrays = 10, // Number of sub-arrays
    numPerArray = 20; // Number of squares per sub-array

for(var i = 0; i < numArrays; i++){
    var subArray = [];
    // Number to start at
    var start = i * numPerArray;
    // Count up to start + numPerArray
    for(var j = start; j < start + numPerArray; j++){
        subArray.push(j);
    }
    // Add to main array
    array.push(subArray);
}
0
Richard Foster 1 sep. 2014 a las 14:31

Puedes hacerlo con dos bucles "for". En el primer bucle, pasa por la matriz principal y para cada elemento agrega los elementos del segundo bucle.

var arrayLength = 10; // Main array length
var limit = 20; // Number of squares
var array = [];

for ( var i = 0; i < arrayLength; i++ )
{
    array[i] = []; // Create subArray

    for( var j = 1; j <= limit; j++ )
    {
        array[i].push(j);
    }
}
0
Karmidzhanov 2 sep. 2014 a las 07:22