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:
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]
Mon tableau d'origine est bien intact.
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:
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);
Et là, cela ne fonctionne pas.
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