Comme nous le savons en Javascript, les tableaux et les objets sont par référence, mais comment pouvons-nous faire pour copier le tableau sans changer le tableau d'origine plus tard?
Voici quelques façons de procéder:
Imaginez que nous ayons ce tableau dans votre code:
var arr = [1, 2, 3, 4, 5];
1) Boucle à travers le tableau dans une fonction et retourne un nouveau tableau, comme ceci:
function newArr(arr) {
var i=0, res = [];
while(i<arr.length){
res.push(arr[i]);
i++;
}
return res;
}
2) En utilisant la méthode de tranche, la tranche est pour couper une partie du tableau, elle coupera une partie de votre tableau sans toucher l'original, dans la tranche, si ne spécifiez pas le début et la fin du tableau, elle coupera le tout tableau et essentiellement faire une copie complète du tableau, afin que nous puissions facilement dire:
var arr2 = arr.slice(); // make a copy of the original array
3) Également la méthode de contact, c'est pour fusionner deux tableaux, mais nous pouvons simplement spécifier l'un des tableaux, puis cela fait essentiellement une copie des valeurs dans le nouveau tableau contacté:
var arr2 = arr.concat();
4) Également la méthode stringify et parse, ce n'est pas recommandé, mais peut être un moyen facile de copier un tableau et des objets:
var arr2 = JSON.parse(JSON.stringify(arr));
5) Méthode Array.from, ce n'est pas largement pris en charge, avant utilisation, vérifiez le support dans différents navigateurs:
const arr2 = Array.from(arr);
6) Manière ECMA6, également pas entièrement prise en charge, mais les babelJs peuvent vous aider si vous souhaitez transpiler:
const arr2 = [...arr];
slice
et dessplice
opérations intéressantes et un nouvel opérateur de propagation etArray.from
une implémentation beaucoup plus lente. Regardez perfjs.fnfo