ES2025 · TypeScript 7.0
Ejercicios de JavaScript / TypeScript sobre Arrays
11 ejercicios de Arrays en JavaScript / TypeScript. Piensa la respuesta antes de abrirla: la explicación dice por qué las demás opciones fallan.
1 · Elige la respuesta · nivel 1
¿Qué imprime este código?
const days = ["lunes", "martes", "miércoles"];console.log(days[1]);- Amartes
- Blunes
- Cmiércoles
- Dundefined
Ver la respuesta
Respuesta: A. martes
Los índices empiezan en 0: days[0] es lunes y days[1] es martes.
2 · Elige la respuesta · nivel 1
¿Qué imprime este código?
const scores = [7, 9, 4, 10];console.log(scores.length);- A4
- B3
- C10
- D30
Ver la respuesta
Respuesta: A. 4
length dice cuántos elementos tiene el array, no cuánto suman. Hay 4, aunque el último índice sea el 3.
3 · Completa el hueco · nivel 1
Completa para contar cuántas notas llegan al 5.
const scores = [4, 9, 7, 2];const passed = scores.___((s) => s >= 5);console.log(passed.___);- filter
- length
- map
- size
- find
- count
Ver la respuesta
Respuesta: filter · length
const scores = [4, 9, 7, 2];const passed = scores.filter((s) => s >= 5);console.log(passed.length);filter devuelve un array nuevo con los elementos que cumplen la condición. Los arrays tienen length; size es de Map y Set.
4 · Completa el hueco · nivel 1
Completa para añadir "pan" al final de la lista de la compra.
const list = ["leche"];list.___("pan");console.log(list.length);- push
- append
- add
- pop
Ver la respuesta
Respuesta: push
const list = ["leche"];list.push("pan");console.log(list.length);push() añade al final de un array. pop() hace lo contrario: quita el último. append() es de Python. Aunque list sea const, se puede modificar su contenido.
5 · Elige la respuesta · nivel 2
¿Qué imprime este código?
const nums = [3, 1, 2];const sorted = nums.toSorted();console.log(nums.join(","), sorted.join(","));- A3,1,2 1,2,3
- B1,2,3 1,2,3
- C3,1,2 3,1,2
- DTypeError: nums.toSorted is not a function
Ver la respuesta
Respuesta: A. 3,1,2 1,2,3
toSorted() (ES2023) devuelve una copia ordenada y no toca el original, a diferencia de sort(), que ordena el array en su sitio.
6 · Elige la respuesta · nivel 2
¿Qué imprime este código?
console.log([NaN].includes(NaN), [NaN].indexOf(NaN));- Atrue -1
- Bfalse -1
- Ctrue 0
- Dfalse 0
Ver la respuesta
Respuesta: A. true -1
indexOf compara con ===, y NaN === NaN es false, así que no lo encuentra. includes usa SameValueZero, que sí considera iguales dos NaN.
7 · Elige la respuesta · nivel 2
¿Qué imprime este código?
console.log([10, 9, 1].sort().join(","));- A1,10,9
- B1,9,10
- C10,9,1
- D9,10,1
Ver la respuesta
Respuesta: A. 1,10,9
Sin función de comparación, sort convierte los elementos a texto y los ordena como strings: "10" va antes que "9". Para números: sort((a, b) => a - b).
8 · Encuentra el fallo · nivel 2
Debería imprimir 11 21, pero no imprime ningún número. ¿Qué línea tiene el fallo?
1const prices = [10, 20];2const next = prices.map((p) => {3 p + 1;4});5console.log(next.join(" "));Ver la respuesta
El fallo está en la línea 3:
p + 1;Se arregla conreturn p + 1;.Con llaves, una función flecha necesita return; sin él devuelve undefined y map llena el array de undefined. Otra solución es quitar las llaves: (p) => p + 1.
9 · Encuentra el fallo · nivel 2
Imprime 1,NaN,NaN en vez de 1,2,3. ¿Qué línea tiene el fallo?
1const nums = ["1", "2", "3"].map(parseInt);2console.log(nums.join(","));Ver la respuesta
El fallo está en la línea 1:
const nums = ["1", "2", "3"].map(parseInt);Se arregla conconst nums = ["1", "2", "3"].map(Number);.map pasa tres argumentos (elemento, índice, array) y parseInt usa el segundo como base: parseInt("2", 1) y parseInt("3", 2) dan NaN. Number solo usa el primero.
10 · Completa el hueco · nivel 2
Completa para duplicar cada número y después sumarlos todos.
const doubled = nums.___((n) => n * 2);const total = doubled.___((acc, n) => acc + n, 0);- map
- reduce
- filter
- forEach
- find
- some
Ver la respuesta
Respuesta: map · reduce
const doubled = nums.map((n) => n * 2);const total = doubled.reduce((acc, n) => acc + n, 0);map devuelve un array nuevo con cada elemento transformado. reduce acumula los elementos en un solo valor, empezando por el segundo argumento (0).
11 · Ordena las líneas · nivel 2
Ordena el código para contar cuántas veces aparece cada palabra.
- acc[w] = (acc[w] ?? 0) + 1;
- return acc;
- return acc[w];
- }, {});
- console.log(counts.sol, counts.mar);
- const counts = words.reduce((acc, w) => {
- const words = ["sol", "mar", "sol"];
Ver la respuesta
El orden correcto:
const words = ["sol", "mar", "sol"];const counts = words.reduce((acc, w) => { acc[w] = (acc[w] ?? 0) + 1; return acc;}, {});console.log(counts.sol, counts.mar);Sobran: return acc[w];
reduce arrastra el acumulador de una vuelta a la siguiente, así que el callback tiene que devolver acc entero. El {} final es el valor inicial.