Array en Javascript
Array en Javascript
ARRAY EN JAVASCRIPT
Descripción
Los arrays son objetos similares a una lista cuyo prototipo proporciona métodos
para efectuar operaciones de recorrido y de mutación. Tanto la longitud como el
tipo de los elementos de un array son variables. Dado que la longitud de
un array puede cambiar en cualquier momento, y los datos se pueden almacenar
en ubicaciones no contiguas, no hay garantía de que los arrays de JavaScript
sean densos; esto depende de cómo el programador elija usarlos. En general
estas características son cómodas, pero si, en su caso particular, no resultan
deseables, puede considerar el uso de arrays con tipo.
Operaciones habituales
Crear un Array
JSCopy to Clipboard
let frutas = ["Manzana", "Banana"];
console.log(frutas.length);
// 2
JSCopy to Clipboard
let primero = frutas[0];
// Manzana
Recorrer un Array
JSCopy to Clipboard
frutas.forEach(function (elemento, indice, array) {
console.log(elemento, indice);
});
// Manzana 0
// Banana 1
JSCopy to Clipboard
let nuevaLongitud = frutas.push("Naranja"); // Añade "Naranja" al final
// ["Manzana", "Banana", "Naranja"]
frutas.push("Fresa");
// ["Manzana", "Banana", "Fresa"]
3
Ejemplo:
Nota:
let pos = 1,
numElementos = 2;
console.log(vegetales);
// ["Repollo", "Zanahoria"] ==> Lo que actualmente tiene "vegetales"
Copiar un Array
Los índices de los arrays de JavaScript comienzan en cero, es decir, el índice del
primer elemento de un array es 0, y el del último elemento es igual al valor de la
propiedad length del array restándole 1.
let arr = [
"este es el primer elemento",
"este es el segundo elemento",
"este es el último elemento",
];
console.log(arr[0]); // escribe en consola 'este es el primer elemento'
console.log(arr[1]); // escribe en consola 'este es el segundo elemento'
console.log(arr[arr.length - 1]); // escribe en consola 'este es el último elemento'
Por ejemplo, dado un objeto con una propiedad de nombre '3d', sólo podría
accederse a dicha propiedad con la notación corchete.
renderizador.3d.usarTextura(modelo, 'personaje.png')
renderizador['3d'].usarTextura(modelo, 'personaje.png')
Obsérvese que, en el último ejemplo, ha sido necesario poner '3d' entre comillas.
Es posible usar también comillas con los índices del los arrays de JavaScript (p.
ej., decadas['2'] en vez de decadas[2]), aunque no es necesario.
console.log(decadas["2"] != decadas["02"]);
Varios de los métodos propios de un array (p. ej., join(), slice(), indexOf(), etc.)
tienen en cuenta el valor de la propiedad length de un array cuando se les llama.
6
Otros métodos (p. ej., push(), splice(), etc.) modifican la propiedad length de un
array.
console.log(frutas.length); // 3
frutas[5] = "fresa";
console.log(frutas[5]); // 'fresa'
console.log(Object.keys(frutas)); // ['0', '1', '2', '5']
console.log(frutas.length); // 6
frutas.length = 10;
console.log(frutas); // ['banana', 'manzana', 'pera', <2 empty items>, 'fresa', <4
empty items>]
console.log(Object.keys(frutas)); // ['0', '1', '2', '5']
console.log(frutas.length); // 10
console.log(frutas[8]); // undefined
frutas.length = 2;
console.log(Object.keys(frutas)); // ['0', '1']
console.log(frutas.length); // 2
Constructor
Array()
Propiedades estáticas
get Array[@@species]
Métodos estáticos
Array.from()
Array.isArray()
Array.of()
Propiedades de instancia
9
Array.prototype.length
Array.prototype[@@unscopables]
Métodos de instancia
Array.prototype.concat()
Array.prototype.copyWithin()
Array.prototype.entries()
Devuelve un nuevo objeto Array Iterator que contiene los pares clave/valor
para cada índice del array.
Array.prototype.every()
Devuelve true si todos los elementos del array cumplen el predicado que
recibe como parámetro.
Array.prototype.fill()
Asigna un valor estático a todos los elementos del array entre las
posiciones inicio y fin.
Array.prototype.filter()
10
Devuelve un nuevo array que contiene todos los elementos de aquél para el
cual se llama que cumplan el predicado que se le pasa como parámetro.
Array.prototype.find()
Devuelve el primer elemento del array que cumpla el predicado que se pasa
como parámetro, o undefined si ninguno lo cumple.
Array.prototype.findIndex()
Devuelve el índice del primer elemento del array que cumpla el predicado
que se pasa como parámetro, o -1 si nunguno lo cumple.
Array.prototype.forEach()
Array.prototype.includes()
Array.prototype.indexOf()
Devuelve el índice del primer elemento del array que sea igual
a elementoBuscado, o -1 si no existe.
Array.prototype.join()
Array.prototype.keys()
Devuelve un nuevo Array Iterator que contiene las claves de cada índice
del array.
11
Array.prototype.lastIndexOf()
Devuelve el índice del último elemento del array que sea igual
a elementoBuscado, o -1 si no existe.
Array.prototype.map()
Array.prototype.pop()
Array.prototype.push()
Array.prototype.reduce()
Array.prototype.reduceRight()
Array.prototype.reverse()
12
Array.prototype.shift()
Array.prototype.slice()
Array.prototype.some()
Array.prototype.sort()
Array.prototype.splice()
Array.prototype.toLocaleString()
Array.prototype.toString()
13
Array.prototype.unshift()
Array.prototype.values()
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada
índice del array.
Array.prototype[@@iterator]()
Devuelve un nuevo objeto Array Iterator que contiene los valores para cada
índice del array.
Ejemplos
El siguiente ejemplo crea un array mensajes con una longitud de 0, y luego asigna
valores a mensajes[0] y a mensajes[99], con lo que la longitud del array pasa a ser
100.
JSCopy to Clipboard
let mensajes = [];
mensajes[0] = "Hola";
mensajes[99] = "mundo";
JSCopy to Clipboard
let tablero = [
["T", "C", "A", "D", "R", "A", "C", "T"],
["P", "P", "P", "P", "P", "P", "P", "P"],
[" ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " "],
[" ", " ", " ", " ", " ", " ", " ", " "],
["p", "p", "p", "p", "p", "p", "p", "p"],
["t", "c", "a", "d", "r", "a", "c", "t"],
];
console.log(tablero.join("\n") + "\n\n");
Este es el resultado:
T,C,A,D,R,A,C,T
P,P,P,P,P,P,P,P
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
15
p,p,p,p,p,p,p,p
t,c,a,d,r,a,c,t
P,P,P,P,P,P,P,P
,,,,,,,
,,,,,,,
, , , ,p, , ,
,,,,,,,
p,p,p,p, ,p,p,p
t,c,a,d,r,a,c,t
valores = [];
for (let x = 0; x < 10; x++) {
valores.push([2 ** x, 2 * x ** 2]);
}
console.table(valores);
da como resultado:
0 1 0
1 2 2
2 4 8
3 8 18
4 16 32
5 32 50
6 64 72
7 128 98
8 256 128
9 512 162
Listas en Javascript
Las listas en javascript son un tema enorme pero que todo programador de
javascript debe conocer a fondo. En esta entrada me enfocare a los aspectos
básicos de las listas (arreglos, matrices).
Para crear una lista vacía se puede hacer de las siguientes dos formas:
//Forma 1: corchetes
var lista=[];
Sea cual sea la forma que utilicen para crear una lista (arreglo) es irrelevante.
Ahora para crear una lista con elementos desde el inicio se puede hacer de la
siguiente manera:
//Forma 1: corchetes
var lista=new Array("ganzo","perro");
Ahora para recorrer una lista, la mejor manera es por medio del método forEach,
el cual itera con cada elemento del arreglo. Este método recibe una función como
parámetro, y se utiliza de la siguiente manera:
lista.forEach(function(i){
alert(i)
});
17
Para agregar un elemento al final del arreglo se utiliza el método push(), y para
agregar un elemento al inicio del arreglo se utiliza el método unshift(). En el
siguiente ejemplo muestro como se utilizan:
var lista=["ganzo","perro"];
var lista=["ganzo","perro","palomo","gato"];
lista.pop();
Y por último los métodos sort() y reverse() nos sirven para ordenar nuestra lista ya
sea ascendente o descendentemente:
var lista=[5,4,1,9];
lista.sort();
//>> 1, 4, 5, 9
lista.reverse();
//>>9, 5, 4, 1
Todas estas funciones son básicas y nos sirven para el buen manejo de los
objetos, y conocerla es obligación de todo programador de javascript.
MÉTODO MAP
El método map de javascript sirve para llamar una función la cual se ejecutara con
cada uno de los elementos de un arreglo (matriz, lista). Este método recibe
una función como argumento la cual ejecutara n veces (el número de elementos
en nuestro arreglo), y regresara un nuevo arreglo con los resultados.
Su función es la siguiente:
//la función map es inmutable por lo cual debemos asignar lo que regresa a otra lista
//en este caso se lo asignamos a la misma lista
var lista=lista.map(function(elemento){
//sacamos la raíz cuadrada del elemento
return Math.sqrt(elemento);
});
alert(i)
//muestra 1,2,3,4,5
})
También podemos llamar una función existente la cual reciba un argumento el cual
será nuestro elemento:
return elementoLista*10
}
//mostramos el resultado
lista2.forEach(function(i){
alert(i)
//muestra 10,20,30,40,50
})
Listas enlazadas en
JavaScript (Linked list)
Diego Esteban C 🧢
·
Follow
6 min read
·
Jun 13, 2022
81
21
Recomendaciones
Antes de empezar a estudiar listas enlazadas en
JavaScript, se recomienda contar con algunos
conocimientos previos antes de leer este artículo, por lo
cual, dejo la invitación a revisar los siguientes enlaces de
apoyo opcionales:
Introducción a las estructuras de datos en programación
Artículo básico conceptual sobre las estructuras de datos en la programación.
Estructura de datos comunes, breve…
medium.com
class LinkedList {
constructor() {
this.head = null;
}
}
class Node {
constructor(value, next) {
this.value = value;
this.next = next;
}
}
26
* insertNode
insertNode(value) {
const newNode = new Node(value, null);
if (this.head === null) {
this.head = newNode;
return
}
* display
display() {
let current = this.head;
while (current) {
console.log(current.value);
current = current.next;
}
}
28
* findNode
findNode(value) {
let current = this.head;
while (current) {
if (current.value === value) {
return current;
}
current = current.next;
}
return null;
}
* deleteNode
deleteNode(value) {
if (this.head.value === value) {
this.head = this.head.next;
return
}
let current = this.head;
30
while (current.next) {
if (current.next.value === value) {
current.next = current.next.next;
return;
}
current = current.next;
}
}
Listas simples
Una lista simple o lista simplemente encadenada, son
estructuras de datos muy parecidas a los array, donde el
acceso al elemento o nodo , es a través de
un puntero , a diferencia de un array donde este se
accede a través de índices.
En un array los elementos están contiguos en lo que a
memoria se refiere, en cambio en una lista pueden no
estarlos , esto puede verse como una ventaja frente a los
array, por ejemplo si agregamos un nuevo elemento en un
array se verificará que haya un espacio contiguo en
memoria disponible para el nuevo elemento y en caso de
no haberlo se movera el array completo hasta otro lugar
en memoria donde si haya un espacio completo, esto no
sucede con las listas, los elementos pueden estar
dispersos en memoria.
Otra ventaja, es que para ciertas operaciones como
insertar en la mitad es constante en función del tiempo,
por poner un ejemplo.
function LinkedList() {
this.head = null
}
🔰 Buscando un nodo
🔰 Primer elemento
LinkedList.prototype.peekNode = function (value) {
if(this.head === null) {
return false
}
return this.head
}
🔰 Largo de la lista
LinkedList.prototype.length = function (current = this.head, acum = 1) {
if(this.head === null){
return 0
}
if (current.next !== null){
return this.length(current.next, acum = acum + 1)
}
return acum
}
38
🌀 Implementacion completa
function LinkedList() {
this.head = null
}
LinkedList.prototype.prepend = function(value){
if(this.head === null){
return this.head = new Node(value)
}
let newNode = new Node(value)
newNode.next = this.head
this.head = newNode
}