Heim > Web-Frontend > js-Tutorial > Warum erstellt Array.fill(Array) Kopien per Referenz in JavaScript und wie kann dies vermieden werden?

Warum erstellt Array.fill(Array) Kopien per Referenz in JavaScript und wie kann dies vermieden werden?

DDD
Freigeben: 2024-11-28 15:38:12
Original
352 Leute haben es durchsucht

Why Does Array.fill(Array) Create Copies by Reference in JavaScript, and How Can This Be Avoided?

Array.fill(Array) Erstellt Kopien per Referenz in JavaScript

Array.fill() ist eine nützliche Methode zum Füllen eines Arrays mit einem bestimmten Wert. Wenn es jedoch zum Erstellen von Arrays innerhalb von Arrays verwendet wird, entsteht ein Referenzierungsproblem.

Betrachten Sie das folgende Beispiel:

let m = Array(6).fill(Array(12).fill(0));
Nach dem Login kopieren

Dieser Code versucht, eine 6x12-Matrix zu erstellen, in der jedes Element 0 ist . Die inneren Arrays verweisen jedoch alle auf dasselbe Array-Objekt.

Zu veranschaulichen:

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

Anstelle von 0 gibt der obige Code 1 aus, da sich Änderungen an einem Element auf alle anderen Elemente auswirken, die auf dasselbe Array-Objekt verweisen.

Eine Lösung zum Erstellen von Kopien nach Wert ist um stattdessen Array.from() zu verwenden:

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

Diese Syntax erstellt ein neues Array für jedes Element im äußeren Array, was zu einer echten Kopie nach Wert führt Verhalten.

Das obige ist der detaillierte Inhalt vonWarum erstellt Array.fill(Array) Kopien per Referenz in JavaScript und wie kann dies vermieden werden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage