El método copyWithin() copia elementos del arreglo en otra posición dentro del arreglo sin cambiar el tamaño del array. Este método devuelve el array con lo cambios dados.

Ten en cuenta que este método sobrescribe el arreglo original.

Sintaxis

arreglo.copyWithin(target, start, end)

  • target: Es requerido e indica la posición desde donde se van a comenzar a copiar los elementos.
  • start: Es opcional e indica la posición desde donde vamos a copiar los elementos. Por defecto es 0, el inicio del array.
  • end: Es opcional e indica la posicion hasta donde vamos a copiar los elementos, pero sin considerar el elemento que se encuentra en esa posición. Por defecto es el tamaño del array.

Ejemplo:

["a", "b", "c", "d", "e"].copyWithin(2, 0, 2) // ["a", "b", "a", "b", "e"]

En este caso le estamos pasando como target el número 2, esto significa que desde esa posición va a comenzar a copiar los elementos que le pasemos.

La posición 2 del arreglo vendria a ser "c", entonces desde ese lugar vamos a comenzar a copiar.

Como segundo argumento le estamos pasando 0, esto significa que vamos a copiar los elementos que empiecen desde el inicio del arreglo en este caso, "a".

Y como tercer argumento le estamos pasando 2, esto quiere decir que vamos a copiar hasta esa posición, en este caso "c", pero debemos tomar en cuenta que no podemos usar ese elemento.

Entonces explicado lo anterio, vamos a copiar "a" y "b", empezando desde "c", entonces "c" sera cambiado por "a" y "d" por "b", "e" quedaría igual ya que solo tenemos dos elementos a cambiar.

Aunque es un poco complicado de entender al inicio, una vez que lo entiendes ya se vuelve más fácil de usar. Te recomiendo que practiques cambiando los argumentos de la función.