streakode

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. 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. 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. 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. 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. 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. 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. 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. 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 con return 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. 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 con const 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. 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. 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.

Más temas de JavaScript / TypeScript

Ver toda la ruta de JavaScript / TypeScript