Implementando con JavaScript arrays asociativos, listas, pilas y colas

2021-01-23 - Categorías: JavaScript
Logo de Javascript

Este es un pequeño howto, un codekata resumen, de las principales formas para organizar información en vectores o arrays en JavaScript. Lo mismo se puede usar para organizar en forma de vectores de vectores, o lo que es lo mismo, para matrices.

Al grano, generando vectores y matrices

En JavaScript disponemos del objeto Array que nos facilita las primeras funciones para implementar listados de elementos en la forma de listas o colas.

Se pueden definir vectores de longitud variable o fija usando:

let vector = [];
let vectorWithLength = [3];

Esto generará un vectorWithLength con 3 posiciones vacías. Para generar una matriz y un vector se podría hacer con algo tal que así:

'use strict';

// Simple arrays..
let vector = [3];
let matrix = [8];
for (let i = 0; i < 8; i++) matrix[i] = [8];

matrix[7][7] = 'Something..';

console.log(vector);
console.log(matrix);

Implementando una lista

Una lista es un objeto que representa una lista ordenada de elementos referenciados por su posición mediante un índice cada valor. Para asignar valores a una lista simplemente tenemos que asignarlos usando sus índices. Por ejemplo:

// List..
let list = [];
list[0] = 'Valor 1';
list[1] = 'Valor 2';
list[2] = 'Valor 3';

let list2 = ['Valor 1', 'Valor 2', 'Valor 3'];

console.log(list);
console.log(list2);

Implementando una pila

Una pila es un objeto abstracto en programación que representa una lista en la que añadimos y quitamos datos por el mismo extremo. Como si se tratara de una pila de elementos en la realidad, apilamos estos elementos por arriba, y los quitaríamos también de la parte de arriba primero.

Una pila sería lo mismo que una cola LIFO, Last In First Out. Para igualar el resultado al ejemplo anterior:

// Pile
let pile = [];
pile.push('Valor 1');
pile.push('Valor 2');
pile.push('Valor 3');
let lastValue = pile.pop();
console.log(pile);
console.log(lastValue);

Push nos sirve para añadir por el final (arriba), y pop también quitaría por el final (arriba).

Implementando una cola

Para implementar colas, hay que puntualizar que tenemos disponibles varios tipos de colas. Una cola LIFO sería la del apartado anterior. La siguiente más simple sería una cola FIFO, que es la cola más normal a la que estamos acostumbrados. Cuando un elemento se encola se pone al final, y cuando se quita un elemento se quita por el principio.

Para hacer esto en JavaScript tenemos las funciones push() y shift(). Para implementar algo parecido a lo del apartado anterior se podría hacer con algo tal que así:

// FIFO queue
let queue = [];
queue.push('Valor 1');
queue.push('Valor 2');
queue.push('Valor 3');
let firstValue = queue.shift();
console.log(queue);
console.log(firstValue);

Implementando arrays asociativos

No existe en JavaScript ninguna forma de crear arrays asociativos a fecha en que escribo pero es sencillo simularlos usando objetos y propiedades. Como se pueden asignar los valores a los objetos, estas claves de los valores serán los índices que se asocian a sus valores, simulando estos arrays asociativos.

Es más sencillo leer el código fuente que explicarlo:

// Asociative arrays
let associative = {};
associative['value1'] = 'Valor 1';
associative['value2'] = 'Valor 2';
associative['value3'] = 'Valor 3';
console.log(associative['value3']);
console.log(associative.value3);

Todos los fuentes anteriores se tendrían que ver parecido a la imagen siguiente en el inspector de la consola de JavaScript:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2021 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.