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
Barbara StreisandOriginal
2024-11-29 09:30:11870Durchsuche

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

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

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!

Stellungnahme:
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