En TypeScript, un Array es una colección ordenada de elementos, que pueden ser de cualquier tipo (aunque generalmente son homogéneos).
TypeScript proporciona varias formas de declarar y manipular arrays, haciendo que el manejo de colecciones de datos sea bastante cómodo y sencillo.
Si quieres aprender más consulta el Curso de Introducción a la Programación
Existen dos sintaxis principales para declarar un array en TypeScript. La más habitual es empleando corchetes ([]), de la siguiente forma.
let numeros: number[] = [1, 2, 3, 4, 5];
let palabras: string[] = ["TypeScript", "JavaScript", "Node.js"];
Alternativamente podemos usando la Clase Genérica Array<T>
let numeros: Array<number> = [1, 2, 3, 4, 5];
let palabras: Array<string> = ["TypeScript", "JavaScript", "Node.js"];
Generalmente usaremos la primera, salvo en algún caso avanzado (como factorías) en las que deberemos usar el segundo
Iteración sobre arrays
TypeScript soporta la iteración mediante bucles tradicionales y la sintaxis for...of.
for (let i = 0; i < numeros.length; i++) {
console.log(numeros[i]);
}
for (let num of numeros) {
console.log(num);
}
Además, disponemos del método forEach, que es un método de Array que cumple la misma función (lo veremos en el siguiente apartado)
Métodos y propiedades de arrays
TypeScript hereda los métodos y propiedades de arrays de JavaScript, por lo que tenemos una gran cantidad de funciones disponibles manipular y operar con arrays.
length
Devuelve el número de elementos en el array.
let numeros: number[] = [1, 2, 3, 4, 5];
console.log(numeros.length); // 5
push(…elementos)
Añade uno o más elementos al final del array.
numeros.push(6);
console.log(numeros); // [1, 2, 3, 4, 5, 6]
pop()
Elimina y devuelve el último elemento del array.
let ultimo: number = numeros.pop();
console.log(ultimo); // 6
console.log(numeros); // [1, 2, 3, 4, 5]
unshift(…elementos)
Añade uno o más elementos al inicio del array.
numeros.unshift(0);
console.log(numeros); // [0, 1, 2, 3, 4, 5]
shift()
Elimina y devuelve el primer elemento del array.
let primero: number = numeros.shift();
console.log(primero); // 0
console.log(numeros); // [1, 2, 3, 4, 5]
slice(inicio, fin?)
Devuelve una copia superficial de una porción del array.
let subArray: number[] = numeros.slice(1, 3);
console.log(subArray); // [2, 3]
splice(inicio, numElementos, …elementos?)
Añade o elimina elementos del array.
numeros.splice(2, 1, 99);
console.log(numeros); // [1, 2, 99, 4, 5]
concat(…arrays)
Combina dos o más arrays.
let otrosNumeros: number[] = [6, 7, 8];
let combinados: number[] = numeros.concat(otrosNumeros);
console.log(combinados); // [1, 2, 99, 4, 5, 6, 7, 8]
forEach(callback)
Ejecuta una función por cada elemento del array.
numeros.forEach((num) => console.log(num));
// 1
// 2
// 99
// 4
// 5
map(callback)
Crea un nuevo array con los resultados de la llamada a una función aplicada a cada elemento.
let cuadrados: number[] = numeros.map((num) => num * num);
console.log(cuadrados); // [1, 4, 9801, 16, 25]
filter(callback)
Crea un nuevo array con todos los elementos que pasan una prueba.
let mayoresQueTres: number[] = numeros.filter((num) => num > 3);
console.log(mayoresQueTres); // [99, 4, 5]
reduce(callback, valorInicial?)
Aplica una función a un acumulador y cada valor del array (de izquierda a derecha) para reducirlo a un solo valor.
let suma: number = numeros.reduce((acumulador, num) => acumulador + num, 0);
console.log(suma); // 111
Ejemplos prácticos
Encontrar elementos duplicados
function encontrarDuplicados(arr: number[]): number[] {
let duplicados: number[] = [];
let contador: { [key: number]: number } = {};
arr.forEach((num) => {
contador[num] = (contador[num] || 0) + 1;
});
for (let num in contador) {
if (contador[num] > 1) {
duplicados.push(Number(num));
}
}
return duplicados;
}
let numeros: number[] = [1, 2, 3, 4, 5, 2, 3, 4];
console.log(encontrarDuplicados(numeros)); // [2, 3, 4]
Ordenar un array de objetos
interface Persona {
nombre: string;
edad: number;
}
let personas: Persona[] = [
{ nombre: "Luis", edad: 25 },
{ nombre: "Ana", edad: 22 },
{ nombre: "Luis", edad: 30 }
];
personas.sort((a, b) => a.edad - b.edad);
console.log(personas);
// [
// { nombre: "Ana", edad: 22 },
// { nombre: "Luis", edad: 25 },
// { nombre: "Luis", edad: 30 }
// ]
