Arreglos JavaScript
Arreglos 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
let frutas = ["Manzana", "Banana"]
console.log(frutas.length)
// 2
Recorrer un Array
frutas.forEach(function(elemento, indice, array) {
console.log(elemento, indice);
})
// Manzana 0
// Banana 1
Añadir un elemento al final de un Array
let nuevaLongitud = frutas.push('Naranja') // Añade "Naranja" al final
// ["Manzana", "Banana", "Naranja"]
Ejemplo:
Eliminamos "Banana" del array pasándole dos parámetros: la posición
del primer elemento que se elimina y el número de elementos que
queremos eliminar. De esta forma, .splice(pos, 1) empieza en la posición
que nos indica el valor de la variable pos y elimina 1 elemento. En este
caso, como pos vale 1, elimina un elemento comenzando en la posición
1 del array, es decir "Banana".
Nota: con .splice() no solo se puede eliminar elementos del array, sino que
también podemos extraerlos guardándolo en un nuevo array. ¡Ojo! que al
hacer esto estaríamos modificando el array de origen.
console.log(vegetales)
// ["Repollo", "Zanahoria"] ==> Lo que actualmente tiene "vegetales"
Copiar un Array
let copiaArray = vegetales.slice();
// ["Repollo", "Zanahoria"]; ==> Copiado en "copiaArray"
Por ejemplo, dado un objeto con una propiedad de nombre '3d', sólo podría
accederse a dicha propiedad con la notación corchete.
let decadas = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
console.log(decadas.0) // error de sintaxis
console.log(decadas[0]) // funciona correctamente
renderizador.3d.usarTextura(modelo, 'personaje.png')
renderizador['3d'].usarTextura(modelo, 'personaje.png')
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.
Otros métodos (p. ej., push(), splice(), etc.) modifican la propiedad length de
un array.
const frutas = []
frutas.push('banana', 'manzana', 'pera')
console.log(frutas.length) // 3
Cuando se le da a una propiedad de un array JavaScript un valor que
corresponda a un índice válido para el array pero que se encuentre fuera de
sus límites, el motor actualizará el valor de la propiedad length como
corresponda:
frutas[5] = 'fresa'
console.log(frutas[5]) // 'fresa'
console.log(Object.keys(frutas)) // ['0', '1', '2', '5']
console.log(frutas.length) // 6
Constructor
Array()
Crea un nuevo objeto Array.
Propiedades estáticas
get Array[@@species]
La función del constructor se utiliza para crear objetos derivados.
Métodos estáticos
Array.from()
Crea una nueva instancia de Array a partir de similarAUnArray, un
objeto iterable o parecido a un array.
Array.isArray()
Devuelve true si valor es un array, y false en caso contrario.
Array.of()
Crea una nueva instancia de Array con un número variable de
parámetros, independientemente del número y del tipo de dichos
parámetros.
Propiedades de instancia
Array.prototype.length
Indica el número de elementos de un array.
Array.prototype[@@unscopables]
Símbolo que contiene todos los nombres de las propiedades que se
excluyen de un ámbito de enlace with.
Métodos de instancia
Array.prototype.concat()
Devuelve un nuevo array que es la concatenación de aquél sobre el
que se invoca, seguido de otros array(s) o valor(es).
Array.prototype.copyWithin()
Copia una secuencia de elementos de un array dentro del propio array.
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()
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()
Llama a la función pasada como parámetro para todos los elementos
del array.
Array.prototype.includes()
Determina si el array contiene el valorBuscado y
devuelve true o false según sea el caso.
Array.prototype.indexOf()
Devuelve el índice del primer elemento del array que sea igual
a elementoBuscado, o -1 si no existe.
Array.prototype.join()
Concatena en un string todos los elementos de un array.
Array.prototype.keys()
Devuelve un nuevo Array Iterator que contiene las claves de cada
índice del array.
Array.prototype.lastIndexOf()
Devuelve el índice del último elemento del array que sea igual
a elementoBuscado, o -1 si no existe.
Array.prototype.map()
Devuelve un nuevo array que contiene el resultado de llamar a la
función pasada como parámetro a todos los elementos del array sobre
el que se invoca.
Array.prototype.pop()
Elimina el último elemento de un array, y devuelve dicho elemento.
Array.prototype.push()
Añade uno o más elementos al final de un array y devuelve el nuevo
valor de su propiedad length.
Array.prototype.reduce()
Aplica la función pasada como parámetro a un acumulador y a cada
valor del array, que se recorre de izquierda a derecha, para reducirlo a
un único valor.
Array.prototype.reduceRight()
Aplica la función pasada como parámetro a un acumulador y a cada
valor del array, que se recorre de derecha a izquierda, para reducirlo a
un único valor.
Array.prototype.reverse()
Invierte el orden de los elementos de un array (el primero pasa a ser el
último y el último a ser el primero) en el propio array. Este método
modifica el array.
Array.prototype.shift()
Elimina el primer elemento de un array, y devuelve dicho elemento.
Array.prototype.slice()
Extrae una porción del array sobre el que se llama y devuelve un
nuevo array.
Array.prototype.some()
Devuelve true si al menos un elemento del array cumple con el
predicado que se pasa como parámetro.
Array.prototype.sort()
Ordena los elementos de un array, modificando éste, y devuelve el
array ordenado.
Array.prototype.splice()
Añade, borra o modifica elementos de un array.
Array.prototype.toLocaleString()
Devuelve un string adaptado a la configuración regional que
representa el array y sus elementos. Redefine el
método Object.prototype.toLocaleString().
Array.prototype.toString()
Devuelve un string que representa el array y sus elementos. Redefine
el método Object.prototype.toString().
Array.prototype.unshift()
Añada uno o más elementos al inicio de un array y devuelve el nuevo
valor de length para el array resultante.
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
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
, , , , , , ,
, , , , , , ,
, , , , , , ,
, , , , , , ,
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
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