Sommaire:
Array.from()
fonction, il prend un itérable comme en entrée et retourne un tableau de l'itérable.
- Opérateur de propagation:
...
en combinaison avec un littéral de tableau.
const map = new Map([[ 1, 'one' ],[ 2, 'two' ]]);
const newArr1 = [ ...map ];
const newArr2 = Array.from( map );
console.log(newArr1, newArr2);
Mise en garde lors de la copie de tableaux:
Soyez conscient du fait que via ces méthodes ci-dessus, seule une copie superficielle est créée lorsque nous voulons copier un tableau. Un exemple clarifiera le problème potentiel:
let arr = [1, 2, ['a', 'b']];
let newArr = [ ...arr ];
console.log(newArr);
arr[2][0] = 'change';
console.log(newArr);
Ici, en raison du tableau imbriqué, la référence est copiée et aucun nouveau tableau n'est créé. Par conséquent, si nous mutons le tableau imbriqué de l'ancien tableau, ce changement sera reflété dans le nouveau tableau (car ils font référence au même tableau, la référence a été copiée).
Solution de mise en garde:
Nous pouvons résoudre le problème des copies superficielles en créant un clone profond du tableau à l'aide de JSON.parse(JSON.stringify(array))
. Par exemple:
let arr = [1, 2, ['a', 'b']]
let newArr = Array.from(arr);
let deepCloneArr = JSON.parse(JSON.stringify(arr));
arr[2][0] = 'change';
console.log(newArr, deepCloneArr)
Array.from(iterable)
, voir ECMA-262 ed 6 draft .