Pregunta ¿Cómo puedo crear una matriz bidimensional en JavaScript?


He estado leyendo en línea y algunos lugares dicen que no es posible, algunos dicen que sí y luego dan un ejemplo y otros refutan el ejemplo, etc.

  1. ¿Cómo declaro una matriz bidimensional en JavaScript? (suponiendo que sea posible)

  2. ¿Cómo accedería a sus miembros? (myArray[0][1] o myArray[0,1]?)


918
2018-06-08 18:24


origen


Respuestas:


var items = [
  [1, 2],
  [3, 4],
  [5, 6]
];
console.log(items[0][0]); // 1
console.log(items);


1062
2018-06-08 18:27



Simplemente hace que cada elemento dentro de la matriz sea una matriz.

var x = new Array(10);
for (var i = 0; i < 10; i++) {
  x[i] = new Array(20);
}
x[5][12] = 3.0;

374
2018-06-08 18:28



Similar a la respuesta de activa, aquí hay una función para crear una matriz n-dimensional:

function createArray(length) {
    var arr = new Array(length || 0),
        i = length;

    if (arguments.length > 1) {
        var args = Array.prototype.slice.call(arguments, 1);
        while(i--) arr[length-1 - i] = createArray.apply(this, args);
    }

    return arr;
}

createArray();     // [] or new Array()

createArray(2);    // new Array(2)

createArray(3, 2); // [new Array(2),
                   //  new Array(2),
                   //  new Array(2)]

163
2018-06-08 20:49



Javascript solo tiene matrices de 1 dimensión, pero puedes construir matrices de matrices, como otros señalaron.

La siguiente función se puede usar para construir una matriz bidimensional de dimensiones fijas:

function Create2DArray(rows) {
  var arr = [];

  for (var i=0;i<rows;i++) {
     arr[i] = [];
  }

  return arr;
}

La cantidad de columnas no es realmente importante, porque no es necesario especificar el tamaño de una matriz antes de usarla.

Entonces solo puedes llamar:

var arr = Create2DArray(100);

arr[50][2] = 5;
arr[70][5] = 7454;
// ...

65
2018-06-08 18:32



La forma más fácil:

var myArray = [[]];

59
2018-01-22 18:47



La razón por la que algunos dicen que no es posible es porque una matriz bidimensional es realmente una matriz de matrices. Los otros comentarios aquí proporcionan métodos perfectamente válidos para crear matrices bidimensionales en JavaScript, pero el punto de vista más puro sería que usted tiene una matriz unidimensional de objetos, cada uno de esos objetos sería una matriz unidimensional que constaría de dos elementos.

Entonces, esa es la causa de los puntos de vista conflictivos.


41
2018-06-08 18:33



Pocas personas muestran el uso de push:
Para aportar algo nuevo, te mostraré cómo inicializar la matriz con algún valor, ejemplo: 0 o una cadena vacía "".
Recordando que si tiene una matriz de 10 elementos, en javascript, ¡el último índice será 9!

function matrix( rows, cols, defaultValue){

  var arr = [];

  // Creates all lines:
  for(var i=0; i < rows; i++){

      // Creates an empty line
      arr.push([]);

      // Adds cols to the empty line:
      arr[i].push( new Array(cols));

      for(var j=0; j < cols; j++){
        // Initializes:
        arr[i][j] = defaultValue;
      }
  }

return arr;
}

ejemplos de uso:

x = matrix( 2 , 3,''); // 2 lines, 3 cols filled with empty string
y = matrix( 10, 5, 0);// 10 lines, 5 cols filled with 0

25
2017-08-08 02:22



Dos líneas:

var a = []; 
while(a.push([]) < 10);

Generará una matriz a de la longitud 10, llena de matrices. (Push agrega un elemento a una matriz y devuelve la nueva longitud)


22
2018-05-26 10:00



La forma más fácil:

var arr  = [];

var arr1 = ['00','01'];
var arr2 = ['10','11'];
var arr3 = ['20','21'];

arr.push(arr1);
arr.push(arr2);
arr.push(arr3);

alert(arr[0][1]); // '01'
alert(arr[1][1]); // '11'
alert(arr[2][0]); // '20'

16
2017-12-27 08:59