Heim > Web-Frontend > js-Tutorial > Warum erstellt Array.fill(Array) Kopien per Referenz in mehrdimensionalen Arrays?

Warum erstellt Array.fill(Array) Kopien per Referenz in mehrdimensionalen Arrays?

Barbara Streisand
Freigeben: 2024-11-29 09:30:11
Original
879 Leute haben es durchsucht

Why Does Array.fill(Array) Create Copies by Reference in Multidimensional Arrays?

Array.fill(Array) erstellt Kopien per Referenz

Wenn Sie Array.fill zum Erstellen mehrdimensionaler Arrays verwenden, ist es wichtig, sich dessen bewusst zu sein Die inneren Arrays sind zunächst Kopien per Referenz. Dies bedeutet, dass jede Änderung an einem inneren Array in allen anderen widergespiegelt wird, die auf dasselbe Array-Objekt verweisen.

Zum Beispiel:

let m = Array(6).fill(Array(12).fill(0));

m[0][0] = 1;
console.log(m[1][0]); // Outputs 1 instead of 0
Nach dem Login kopieren

Um dieses Problem zu beheben, können Sie Array.from verwenden () anstelle von Array.fill():

let m = Array.from({length: 6}, e => Array(12).fill(0));

m[0][0] = 1;
console.log(m[0][0]); // Expecting 1
console.log(m[0][1]); // Expecting 0
console.log(m[1][0]); // Expecting 0
Nach dem Login kopieren

Array.from() erstellt eine Kopie des iterierbaren Objekts (in diesem Fall ein Objekt mit einer Längeneigenschaft und einer Zuordnungsfunktion). das ein neues Array zurückgibt). Dadurch wird sichergestellt, dass jedes innere Array unabhängig ist und Änderungen an einem keine Auswirkungen auf die anderen haben.

Das obige ist der detaillierte Inhalt vonWarum erstellt Array.fill(Array) Kopien per Referenz in mehrdimensionalen Arrays?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage