Array.isArray()
: determina si el valor pasado es un Array
(retorna true
o false
).
Array.prototype.concat()
unir dos o más arrays. Este método no cambia los arrays existentes, sino que devuelve un nuevo array.
fuente : MDN
.filter()
- Devuelve un nuevo array con todos los elementos que satisfacen la condición.
- Si ninguno cumple, retorna un array vacio.
- No cambia el array original.
let arr = [1, 2, 3, 4, 5, 6];
// retornar los menores a 4
let filteredArr = arr.filter((item) => item < 4);
console.log(filteredArr); // output: [1, 2, 3]
.map()
- Devuelve un nuevo array con el resultado de llamar a una función para cada elemento del array.
- No cambia el array original.
- async?
let arr = [1, 2, 3, 4, 5, 6];
// suma 1 a cada elemento
let mappedArr = arr.map((item) => item + 1);
console.log(mappedArr); // output: [2, 3, 4, 5, 6, 7]
.find()
- Retorna el valor del primer elemento del array que cumple la condición.
- Se ejecuta para todos los elementos del array.
- No cambia el array original.
let arr = [1, 2, 3, 4, 5, 6];
// encontrar elemento mayor a 4
let resultArr = arr.find((item) => item > 4);
console.log(resultArr); // output: [5]
.findIndex()
- devuelve el índice del PRIMER elemento de un array que cumpla con la función de prueba proporcionada
- Si no lo encuentra, retorna -1
const scores = [70, 65, 23, 50, 32];
const firstFail = (element) => element < 40;
console.log(scores.findIndex(firstFail));
// expected output: 2
const students = [{
name: "Jhon",
code: 652
}, {
name: "Alice",
code: 222
}, {
name: "Yuan",
code: 667
}, {
name: "Ter",
code: 362
}];
function findName(nameToSearch) {
return (element) => element.name === nameToSearch;
}
console.log(students.findIndex(findName("Ter")));
// expected output: 3
function findByCode(codeToSearch) {
return (element) => element.code === codeToSearch;
}
console.log(students.findIndex(findByCode(667)));
// expected output: 2
.forEach()
- Ejecuta la función indicada una vez por cada elemento del array.
- No cambia el array original.
let arr = [1, 2, 3, 4, 5, 6];
arr.forEach((item) => {
console.log(item); // output: 1 2 3 4 5 6
});
.some()
- Comprueba si al menos un elemento del array cumple con la condición
- Devuelve
true
cuando encuentra al menos un elemento, de lo contrario, retornafalse
. - Recorre el array hasta dar con el primer elemento que satisface la condición dada, sólo recorrera el array completo cuando ningún elemento satisfaga la condición o sea unicamente el último elemento que satisfaga la condición.
- No cambia el array original.
let arr = [1, 2, 3, 4, 5, 6];
// checking is any array element equals to 3
let isThree = arr.some((item) => item === 3);
console.log(isThree); // output: true
// checking is any array element equals to 10
let isTen = arr.some((item) => item === 10);
console.log(isTen); // output: false
.every()
- Comprueba si todos los elementos en el array satisfacen una condición.
- Si todos los elementos en el array satisfacen la condición retorna
true
de lo contrario, retornafalse
. - No cambia el array original.
let arr = [1, 2, 3, 4, 5, 6];
// son todos los elementos menores o igual a 6
let lessSix = arr.every((item) => item <= 6);
console.log(lessSix); // output: true
// son todos los elementos mayores a 5
let greaterTen = arr.every((item) => item > 5);
console.log(greaterTen); // output: false
.reduce()
- Reduce un
array
a un único valor. - Ejecuta una función proporcionada (función reductora) a cada elemento del array (), y el valor de retorno de la función se almacena en un acumulador.
- El valor del acumulador esta disponible en cada iteración de la función reductora.
- No cambia el array original.
// suma todos los elementos de un array con multiples elementos.
let arrayManyValues = [1, 2, 3, 4, 5, 6];
let sumManyValues = arrayManyValues.reduce((total, value) => total + value);
console.log(sumManyValues); // output: 21
// suma un atributo de todos los objetos de un array
// Debemos definir valor inicial en CERO
let arrayManyObjects = [{amount: 500},{amount: 700}]
let totalManyObjects = arrayManyObjects.reduce((valorPrevio, itemActual) => valorPrevio + itemActual.amount,0);
console.log(totalManyObjects) // output: 1200
.includes()
- Determina si un
array
incluye un determinado elemento. - Devuelve
true
ofalse
según corresponda. - No cambia el array original.
let language = ["html", "css", "js"];
// Verifica si el array `language` contiene el item 'js'
language.includes("js"); // output: true
// Verifica si el array `language` contiene el item 'react'
language.includes("react"); // output: false
.push()
- añade uno o más elementos al final de un array y devuelve la nueva longitud del array.
- Ccambia el array original
const animals = ['pigs', 'goats', 'sheep'];
const count = animals.push('cows');
console.log(count);
// expected output: 4
console.log(animals);
// expected output: Array ["pigs", "goats", "sheep", "cows"]
animals.push('chickens', 'cats', 'dogs');
console.log(animals);
// expected output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]
.pop()
- elimina el último elemento de un array y lo devuelve.
- Este método cambia la longitud del array.
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// expected output: "tomato"
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
plants.pop();
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage"]
.shift()
- elimina el primer elemento
- Retorna el valor eliminado.
- Modifica el array original
let languages = ["Java", "PHP", "Python"];
let foo = languages.shift();
console.log(foo);
// Output => Java
console.log(languages);
// Output => [ 'PHP', 'Python' ]
.unshift()
- agrega uno o más elementos al inicio del array.
- Revuelve la nueva longitud del array.
- Modifica el array original
const array1 = [1, 2, 3];
console.log(array1.unshift(4, 5));
// expected output: 5
console.log(array1);
// expected output: Array [4, 5, 1, 2, 3]
.sort(funcionComparador)
- Ordena los elementos de un arreglo (array) localmente y devuelve el arreglo ordenado.
- El modo de ordenación por defecto responde a la posición del valor del string de acuerdo a su valor Unicode.
- funcionComparador (Opcional), especifica una función que define el modo de ordenamiento. Si se omite, el array es ordenado atendiendo a la posición del valor Unicode de cada caracter, según la conversión a string de cada elemento.
- Modifica el array original
var frutas = ['guindas', 'manzanas', 'bananas'];
frutas.sort();
console.log(frutas)
// ['bananas', 'guindas', 'manzanas']
var puntos = [1, 10, 2, 21];
puntos.sort();
console.log(puntos)
// [1, 10, 2, 21]
// Tenga en cuenta que 10 viene antes que 2
// porque '10' viene antes que '2' según la posición del valor Unicode.
var cosas = ['word', 'Word', '1 Word', '2 Words'];
cosas.sort();
console.log(cosas)
// ['1 Word', '2 Words', 'Word', 'word']
// En Unicode, los números vienen antes que las letras mayúsculas
// y estas vienen antes que las letras minúsculas.
function compare(a, b) {
if (a < b) {
// a es menor que b según criterio de ordenamiento
return -1;
}
if (a > b) {
// a es mayor que b según criterio de ordenamiento
return 1;
}
// a es igual b
return 0;
}
// Ordenando un array de enteros
const array = [10, 1, 2, 20]
array.sort(compare)
console.log(array)
// [1, 2, 10, 20]
// Ordenando array de objetos por String
var users = [{
name: 'Edward',
value: 21
},
{
name: 'Sharpe',
value: 37
},
{
name: 'And',
value: 45
},
{
name: 'The',
value: -12
},
{
name: 'Magnetic',
value: 13
},
{
name: 'Zeros',
value: 37
}
];
function sortByName(a, b) {
if (a.name > b.name) {
return 1
}
if (a.name < b.name) {
return -1
}
return 0
}
users.sort(sortByName);
console.log(users)
/*
[{
name: "And",
value: 45
}, {
name: "Edward",
value: 21
}, {
name: "Magnetic",
value: 13
}, {
name: "Sharpe",
value: 37
}, {
name: "The",
value: -12
}, {
name: "Zeros",
value: 37
}]
*/
function sortByValue(a, b) {
if (a.value > b.value) {
return 1
}
if (a.value < b.value) {
return -1
}
return 0
}
users.sort(sortByValue);
console.log(users)
/*
[{
name: "The",
value: -12
}, {
name: "Magnetic",
value: 13
}, {
name: "Edward",
value: 21
}, {
name: "Sharpe",
value: 37
}, {
name: "Zeros",
value: 37
}, {
name: "And",
value: 45
}]
*/
.slice(inicio,fin)
- Devuelve una copia de una parte del array desde el indice
inicio
hasta el indicefin
. - fin no incluido
- El array original no se modificará.
-
Los elementos del array original son copiados en el array devuelto de la siguiente manera:
- Si el item del array es un objeto, copia su referencia ( no el objeto en sí ),
slice copia la referencia dentro del nuevo array
. Ambos, el array original y el nuevo, referencian al mismo objeto. Si un objeto referenciado cambia, los cambios son visibles para ambos arrays. - Si el item es primitivo, un string, numbers o boolean (no objetos
String
yNumber
),slice
copia los valores en el nuevo array. Los cambios a los string, numbers y boolean en un array no afectan a los del otro array.
- Si el item del array es un objeto, copia su referencia ( no el objeto en sí ),
- Si un nuevo elemento es agregado a cualquiera de los arrays, el otro array no es afectado.
- Si
inicio
es omitido el valor por defecto es0
. - Si el
inicio
especificado es negativo, indica un desplazamiento desde el final del array.slice(-2)
extrae los dos últimos elementos del array. - Si
inicio
es mayor a la longitud del array, se devuelve un array vacío. - Si
fin
es omitido, slice extrae hasta el final de la secuencia (arr.length
). - Si
fin
es negativo, indica un desplazamiento desde el final de la secuencia.slice(2,-1)
extrae desde el tercer hasta el penúltimo elemento en la secuencia.
const array = ["A","B","C","D","E","F","G","H","I"]
/**
* Inicio y fin positivos
* Obteniendo un sub array
*/
const subArray = array.slice(2,4)
// ["C" ,"D"]
/**
* Omitiendo inicio y fin
* Copiando todos los items
*/
const copy = array.slice()
// ["A","B","C","D","E","F","G","H","I"]
/**
* Inicio CERO
* Copiando los primeros 3 elementos
*/
const getFirstElements = array.slice(0,3)
// ["A","B","C"]
/**
* Omitiendo fin
* Omite los primeros 3 elementos
*/
const omitFirstElement = array.slice(3)
// ["D","E","F","G","H","I"]
/**
* Inicio negativo
* Copiando los últimos 3 elementos
*/
const getLastElements = array.slice(-3)
// ["G","H","I"]
/**
* Fin negativo
* Omite los últimos 2 elementos
*/
const omitLastElement = array.slice(0,-2)
//["A","B","C","D","E","F","G"]
/**
* Inicio y fin negativo
*/
const sub = array.slice(-5,-3)
// ["E","F"]
console.log(JSON.stringify(sub))
Tips
Remover valores falsos (falsy) de un array.
var myArray = [12, 'web development', '', NaN, undefined, 0, true, false];
//
var myArrayClean = myArray.filter(Boolean);
console.log(myArrayClean);
//Output : [ 12, 'web development', true ]
Eliminar duplicado de un array usando SET
var myArray = [1,2,3,3,3,"A","A","b"]
// Utiliza el constructor para para crear un set con el mismo contenido que un array
var mySet = new Set(myArray)
// Utiliza la propagación para crear un array con los contenidos de un set
var myArrayClean = [...mySet]
console.log(myArrayClean)
// En una unica linea, queda algo asi
var noDuplicate = [...new Set(myArray)]
console.log(noDuplicate)