En una página web que utiliza javascript necesito aumentar al máximo la velocidad con que se rellena
un array myArray.
La forma en que voy a hacer esto se resume con el siguiente ejemplo, que rellena un Array de enteros
llamado Array1:
1) La forma habitual de introducir elementos en Array1 es:
var Array1 = [5,7];
Array1.push (10);
2) Pero si conozco a priori el tamaño que necesitaré para el Array, es mucho más rápido hacerlo así:
var Array1 = [ 0, 0, 0, 0, 0 ] ; // Allocated array of length 5.
var A1Length = 0 ;
// to do a 'push', do
Array1[ A1Length++ ] = 10;
Sin embargo, el Array que estoy usando en mi página web (myArray) no contine enteros, sino objetos
cada uno de los cuales es un Array de dos elementos.
No es un Array de dos dimensiones, sino un array que contiene objetos de tipo Array.
Lo usaré como un mapa donde "A" es la clave y "B" el valor buscado.
Actualmente, lo relleno así y funciona correctamente:
var myArray = [];
var newElement = { "A":10, "B":'Name 1' }
myArray.push(newElement);
Para aumentar la velocidad con que se rellena myArray, siguiendo el ejmplo comentado para Array1,
necesito declararlo con el tamaño que va a tener (1000 objetos de tipo Array de dos dimensiones).
He probado a declararlo así:
var myArray = Array.from(Array(1000), () => new Array(2));
var myArrayUsed = 0;
Y entonces insertar nuevos elementos en el mismo:
var newElement = { "A":10, "B":'Name 1' }
myArray[myArrayUsed++] = newElement;
El problema es que este código no funciona y creo que es porque la declaración de myArray no es
correcta.
un array myArray.
La forma en que voy a hacer esto se resume con el siguiente ejemplo, que rellena un Array de enteros
llamado Array1:
1) La forma habitual de introducir elementos en Array1 es:
var Array1 = [5,7];
Array1.push (10);
2) Pero si conozco a priori el tamaño que necesitaré para el Array, es mucho más rápido hacerlo así:
var Array1 = [ 0, 0, 0, 0, 0 ] ; // Allocated array of length 5.
var A1Length = 0 ;
// to do a 'push', do
Array1[ A1Length++ ] = 10;
Sin embargo, el Array que estoy usando en mi página web (myArray) no contine enteros, sino objetos
cada uno de los cuales es un Array de dos elementos.
No es un Array de dos dimensiones, sino un array que contiene objetos de tipo Array.
Lo usaré como un mapa donde "A" es la clave y "B" el valor buscado.
Actualmente, lo relleno así y funciona correctamente:
var myArray = [];
var newElement = { "A":10, "B":'Name 1' }
myArray.push(newElement);
Para aumentar la velocidad con que se rellena myArray, siguiendo el ejmplo comentado para Array1,
necesito declararlo con el tamaño que va a tener (1000 objetos de tipo Array de dos dimensiones).
He probado a declararlo así:
var myArray = Array.from(Array(1000), () => new Array(2));
var myArrayUsed = 0;
Y entonces insertar nuevos elementos en el mismo:
var newElement = { "A":10, "B":'Name 1' }
myArray[myArrayUsed++] = newElement;
El problema es que este código no funciona y creo que es porque la declaración de myArray no es
correcta.
06/01/2020 23:24