Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

225
Vistas
¿Cómo funciona este código para crear una matriz de números secuenciales?

Encontré este código en línea y funciona; sin embargo, no puedo averiguar cómo!

¿Alguien puede explicar cómo funciona este código?

 const arr_seq = Array.apply(null, { length: 10 }).map(Number.call, Number); console.log(arr_seq)

La salida es:

 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Además, ¿alguien puede explicar por qué este código, que pensé que podría hacer exactamente lo mismo, crea una matriz llena de undefined ?

 const arr_undef = Array(n).map(Number.call, Number);
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Array.apply espera un valor de matriz (-like) para su segundo argumento. Luego creará un argumento para cada ranura en este objeto similar a una matriz.

Dado que este código pasa { length: 5 } como argumento, el método de apply llamará a Array con 5 valores. Pero al leer { length: 5 }[i] for i en el rango 0..4, siempre quedará undefined . Entonces Array.apply(null, { length: 5 }) se traducirá a Array(undefined, undefined, undefined, undefined, undefined) .

Luego, la llamada .map tiene un segundo argumento, que es el argumento thisArg . Esto asegura que no solo se call a la llamada, sino Number.call , es decir, con this configuración correcta. Con Number.call el primer argumento recibirá esos valores undefined (explicados en el párrafo anterior) y como segundo argumento, el índice del mapeo. Entonces recibimos estas llamadas:

 Number.call(undefined, 0) Number.call(undefined, 1) Number.call(undefined, 2) Number.call(undefined, 3) Number.call(undefined, 4)

Esto da el mismo resultado que:

 Number(0) Number(1) Number(2) Number(3) Number(4)

Y .map devolverá una matriz con esos valores.

Nuevas formas de hacer esto

Desde ECMAScript 2015, JavaScript tiene Array.keys() y sintaxis extendida para literales de matriz. Entonces ahora podemos lograr lo mismo de una manera menos críptica:

 console.log([...Array(5).keys()]);

about 4 years ago · Santiago Trujillo Denunciar

0

Array(n) crea una matriz vacía de longitud 10; la parte map / Number.call requiere que algo esté allí para obtener el índice:

 const arr = Array(5).fill(null).map(Number.call, Number); console.log(arr);

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda