Comment copier un tableau en Javascript
Dans ce tutoriel nous allons découvrir comment copier un tableau en Javascript. Il existe deux types de copies pouvant être effectuées sur un tableau.
- Simple copie
- Copie en profondeur
Simple copie
Les tableaux en javascript ne sont que des objets avec des propriétés et des méthodes. Lorsque nous assignons directement un tableau à une autre variable, il est copié de manière superficielle.
Cela signifie qu’il ne fait que référencer le tableau, il ne copie pas tous les éléments.
Exemple:
var tab1 = [1, 2, 3, 4];
//simple copie
var tab2 = tab1;
console.log(tab2); //[1, 2, 3, 4];
//Mettre à jour le tableau d'origine
tab1.push(5); //[1, 2, 3, 4, 5]
//La mise à jour est reflétée dans le tableau copié
console.log(tab2); //[1, 2, 3, 4, 5]
var tab1 = [1, 2, 3, 4];
//simple copie
var tab2 = tab1;
console.log(tab2); //[1, 2, 3, 4];
//Mettre à jour le tableau d'origine
tab1.push(5); //[1, 2, 3, 4, 5]
//La mise à jour est reflétée dans le tableau copié
console.log(tab2); //[1, 2, 3, 4, 5]
var tab1 = [1, 2, 3, 4]; //simple copie var tab2 = tab1; console.log(tab2); //[1, 2, 3, 4]; //Mettre à jour le tableau d'origine tab1.push(5); //[1, 2, 3, 4, 5] //La mise à jour est reflétée dans le tableau copié console.log(tab2); //[1, 2, 3, 4, 5]
Copie en profondeur
Nous pouvons concaténer le tableau d’origine avec un tableau vide et le renvoyer pour créer une copie profond.
var tab1 = [1, 2, 3, 4];
//Copie en profondeur
var tab2 = [].concat(tab1);
console.log(tab2); //[1, 2, 3, 4];
//Mettre à jour le tableau d'origine
tab1.push(5); //[1, 2, 3, 4, 5]
//La mise à jour n'est pas reflétée dans le tableau copié
console.log(tab2); //[1, 2, 3, 4]
var tab1 = [1, 2, 3, 4];
//Copie en profondeur
var tab2 = [].concat(tab1);
console.log(tab2); //[1, 2, 3, 4];
//Mettre à jour le tableau d'origine
tab1.push(5); //[1, 2, 3, 4, 5]
//La mise à jour n'est pas reflétée dans le tableau copié
console.log(tab2); //[1, 2, 3, 4]
var tab1 = [1, 2, 3, 4]; //Copie en profondeur var tab2 = [].concat(tab1); console.log(tab2); //[1, 2, 3, 4]; //Mettre à jour le tableau d'origine tab1.push(5); //[1, 2, 3, 4, 5] //La mise à jour n'est pas reflétée dans le tableau copié console.log(tab2); //[1, 2, 3, 4]