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

241
Vistas
¿Cuál es el punto de difundir operaror en JavaScript especialmente en este ejemplo?

Estoy estudiando ahora en FreeCodeCamp , y aquí hay un desafío:

"Hemos definido una función, copyMachine, que toma arr (una matriz) y num (un número) como argumentos. Se supone que la función devolverá una nueva matriz formada por num copias de arr. Hemos hecho la mayor parte del trabajo por usted , pero aún no funciona del todo bien. Modifique la función usando la sintaxis extendida para que funcione correctamente (pista: ¡otro método que ya hemos cubierto podría ser útil aquí!)".

Y aquí hay una solución:

 function copyMachine(arr, num) { let newArr = []; while (num >= 1) { // Only change code below this line newArr.push([...arr]) // Only change code above this line num--; } return newArr; } console.log(copyMachine([true, false, true], 2));

¿Qué sentido tiene agregar corchetes y puntos adicionales (...) si pudiera agregar newArr.push(arr) en su lugar y obtener el mismo resultado? El resultado es: [ [ true, false, true ], [ true, false, true ] ]

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Es el tema de la referencia.

Al usar esta sintaxis newArr.push(arr) arr está insertando la matriz original del argumento, por lo que siempre que la matriz cambie su contenido, las matrices dentro de newArr también se actualizarán, ya que siempre es la misma matriz.

Cuando usa la sintaxis extendida, en realidad está enviando una copia de ese arr . Esto significa que es una nueva matriz que no está vinculada a la matriz que pasa a una función

Considera esto

 function copyMachine(arr, num) { let newArr = []; while (num >= 1) { // Only change code below this line newArr.push(arr) // Only change code above this line num--; } return newArr; } const oldArr = [true, false, true]; const newArr = copyMachine(oldArr, 2); oldArr.push(true); console.log(newArr); // contains an element added to the old array

about 4 years ago · Juan Pablo Isaza Denunciar

0

La sintaxis extendida (...) permite que un iterable, como una expresión de matriz o una cadena, se expanda en lugares donde se esperan cero o más argumentos (para llamadas a funciones) o elementos (para literales de matriz), o se expande una expresión de objeto en lugares donde se esperan cero o más pares clave-valor (para objetos literales).

En el código provisto, el operador de propagación se usa para crear una nueva matriz usando los elementos de la matriz llamada arr y luego insertarla en newArr .

Esto es similar a hacer newArr.push(arr);

about 4 years ago · Juan Pablo Isaza 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