objetos matrices elementos ejemplos contar bidimensional array agregar javascript arrays dynamic 2d push

matrices - javascript bidimensional



¿Declarar una matriz bidimensional vacía en Javascript? (8)

Por lo general, sabemos el número de columnas, pero tal vez no filas (registros). Aquí hay un ejemplo de mi solución haciendo uso de mucho de lo anterior aquí. (Para aquellos aquí más experimentados en JS que yo, casi todos, cualquier sugerencia de mejora del código es bienvenida)

var a_cols = [null,null,null,null,null,null,null,null,null]; var a_rxc = [[a_cols]]; // just checking var arr = a_rxc.length ; //Array.isArray(a_rxc); // alert ("a_rxc length=" + arr) ; Returned 1 /* Quick test of array to check can assign new rows to a_rxc. i can be treated as the rows dimension and j the columns*/ for (i=0; i<3; i++) { for (j=0; j<9; j++) { a_rxc[i][j] = i*j; alert ("i=" + i + "j=" + j + " " + a_rxc[i][j] ); } if (i+1<3) { a_rxc[i+1] = [[a_cols]]; } }

Y si pasa esta matriz al servidor, el ajax que funciona para mí es

$.post("../ajax/myservercode.php", { jqArrArg1 : a_onedimarray, jqArrArg2 : a_rxc }, function(){ },"text" ) .done(function(srvresp,status) { $("#id_PageContainer").html(srvresp);} ) .fail(function(jqXHR,status) { alert("jqXHR AJAX error " + jqXHR + ">>" + status );} );

Quiero crear una matriz bidimensional en Javascript donde voy a almacenar las coordenadas (x, y). Todavía no sé cuántos pares de coordenadas tendré porque serán generados dinámicamente por la entrada del usuario.

Ejemplo de matriz 2d predefinida:

var Arr=[[1,2],[3,4],[5,6]];

Supongo que puedo usar el método PUSH para agregar un nuevo registro al final de la matriz.

¿Cómo declaro una matriz bidimensional vacía para que cuando use mi primer Arr.push () se agregará al índice 0, y cada próximo registro escrito por push tomará el siguiente índice?

Esto es probablemente muy fácil de hacer, solo soy un novato con JS, y agradecería que alguien pudiera escribir un breve fragmento de código de trabajo que yo pudiera examinar. Gracias


Puede llenar una matriz con matrices utilizando una función:

var arr = []; var rows = 11; var columns = 12; fill2DimensionsArray(arr, rows, columns); function fill2DimensionsArray(arr, rows, columns){ for (var i = 0; i < rows; i++) { arr.push([0]) for (var j = 0; j < columns; j++) { arr[i][j] = 0; } } }

El resultado es:

Array(11) 0:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 3:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 4:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 5:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 6:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 7:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 8:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 9:(12) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 10:(12)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]


Puedes anidar una matriz dentro de otra usando la sintaxis abreviada:

var twoDee = [[]];


Puedes declarar una matriz regular como esta:

var arry = [];

Luego, cuando tiene un par de valores para agregar a la matriz, todo lo que necesita hacer es:

arry.push([value_1, value2]);

Y sí, la primera vez que llame a arry.push , el par de valores se colocará en el índice 0.

Desde el nodejs repl:

> var arry = []; undefined > arry.push([1,2]); 1 > arry [ [ 1, 2 ] ] > arry.push([2,3]); 2 > arry [ [ 1, 2 ], [ 2, 3 ] ]

Por supuesto, dado que JavaScript está tipeado dinámicamente, no habrá ningún tipo de comprobador que obligue a que la matriz permanezca bidimensional. Deberá asegurarse de agregar solo pares de coordenadas y no hacer lo siguiente:

> arry.push(100); 3 > arry [ [ 1, 2 ], [ 2, 3 ], 100 ]


Puedes probar algo como esto:

var arr = new Array([]);

Datos push:

arr[0][0] = ''abc xyz'';


Qué hay de malo en

var arr2 = new Array(10,20); arr2[0,0] = 5; arr2[0,1] = 2 console.log("sum is " + (arr2[0,0] + arr2[0,1]))

debería leer "suma es 7"


Si quieres poder acceder a la matriz como lo hace la matriz [i] [j]

Me parece el más conveniente para iniciarlo en un bucle.

var matrix = [], cols = 3; //init the grid matrix for ( var i = 0; i < cols; i++ ) { matrix[i] = []; }

esto te dará [[], [], []]

por lo que la matriz [0] [0] matriz [1] [0] devuelve indefinido y no el error "Tipo de error no detectado: no se puede establecer la propiedad ''0'' de indefinido"


Un conjunto vacío se define al omitir valores, de esta manera:

v=[[],[]] a=[] b=[1,2] a.push(b) b==a[0]