Bonjour,
Une des utilisations possibles de Array.from, si j'ai bien compris, est de faire une copie d'un tableau en préservant l'original ( = deep copy).
J'ai fait un premier test:
Mon tableau d'origine est bien intact.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 const a1 = [2, 3, 5]; const a2 = Array.from(a1); a2[0] += 1; console.log(a1, a2); // renvoie (3) [2, 3, 5] (3) [3, 3, 5]
Par ailleurs, je suis en train de rédiger une classe me permettant de travailler avec des matrices. Le constructeur prend en argument un tableau de tableaux:
Et là, cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class Matrix { constructor(array) { this.array = array; this.height = array.length; this.width = array[0].length; } multiply(k) { const temp = Array.from(this.array); for (let i = 0; i < this.height; i += 1) { for (let j = 0; j < this.width; j += 1) { temp[i][j] *= k; } } return new Matrix(temp); } } const M = new Matrix([[1, 2], [1, 0]]); const N = M.multiply(2); console.log(M);
Ma matrice M initiale est multipliée par 2 alors que je voulais que seule ma matrice N soit modifiée.
j'ai fait quelques tests: si je me contente d'ajouter 1 à un des nombres de la matrice temp, la matrice désignée par this.array est aussi modifiée.
Quelqu'un peut-il m'éclairer?
Merci d'avance.
Raphaël
Partager