¿Cómo clonar una array en ES6?

El operador de propagación en ES6 se usa para clonar una array, mientras que el método slice() en JavaScript es una forma más antigua que proporciona 0 como primer argumento. Estos métodos crean una nueva array independiente y copian todos los elementos de oldArray en la nueva, es decir, ambos métodos hacen una copia superficial de la array original.

Sintaxis:

// Older way
var clonedArray= oldArray.slice(0)    

// ES6 way: spread operator
var clonedArrayES6= [...oldArray]    

Ejemplo:

<script>
  
// Cloning array using spread
// operator- ES6
  
const oldArray= ["dog1", "dog2", "dog3"];
   
const clonedArrayES6= [...oldArray];
   
// ["dog1", "dog2", "dog3"]
console.log(clonedArrayES6);  
</script>

Producción:

Igualdad e igualdad: a diferencia del operador «=», que crea una nueva variable que solo apunta a la array original en lugar de copiar sus elementos, el operador de distribución crea una nueva array clonada, con una referencia diferente pero con los mismos valores. Por lo tanto, el operador «=» crea una copia profunda de la array original, pero el operador de extensión hace una copia superficial. La array creada por el operador de propagación tiene el mismo valor que la array anterior, pero no es igual a la array anterior.

Ejemplo:

<script>
// Equality and sameness in cloning array
  
const oldArray= ["dog1", "dog2", "dog3"];
  
const clonedArrayES6 = [...oldArray];
const newArray = oldArray;
  
// False, i.e. shallow copy
console.log(clonedArrayES6===oldArray)  
      
// True, i.e. deep copy
console.log(newArray === oldArray)  
</script>

Producción:

Nota: Todos los ejemplos anteriores se pueden probar escribiéndolos dentro de la etiqueta de secuencia de comandos de HTML o directamente en la consola del navegador.

Publicación traducida automáticamente

Artículo escrito por Srishtibajpai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *