es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Comprendiendo una función de rango en JavaScript.

Así que soy nuevo en programación y estoy teniendo un poco de dificultad aquí. Verás, quería escribir una pequeña función de rango, como range(a, b), que devolvería un arreglo con todos los números entre a y b. Así que busqué en Google y encontré esta:

const range = (min, max) => [...Array(max - min + 1).keys()].map(i => i + min);

Esto funciona perfectamente bien, pero tengo un poco de dificultad para entenderlo, especialmente con la parte de .keys(). Pensé que .keys() era una función de objetos que devolvería la clave de un par clave/valor de un objeto, pero aquí parece que se está usando en un arreglo.

¿Qué estoy entendiendo mal aquí?

¡Agradezco la ayuda!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El método .keys() es en realidad un método de Array, no solo un método de Object. Devuelve un iterador que contiene las claves del array, en orden. En el código que encontraste, el constructor Array() se utiliza para crear un array vacío con una longitud igual a la diferencia entre max y min, más 1. Luego se llama al método .keys() en este array, que devuelve un iterador de claves que van desde 0 hasta la longitud del array menos 1. Este iterador se convierte entonces en un array utilizando el operador de propagación ..., y se llama al método .map() en este nuevo array para crear un nuevo array con los valores calculados agregando cada valor del iterador a min.

    Entonces, básicamente, el método .keys() se utiliza aquí para generar un array de enteros consecutivos, que luego se asignan al rango deseado mediante la adición de min a cada valor.

Comments are closed.