Array.fill() dalam JavaScript: A Cautionary Tale of References vs. Values
Array.fill() ialah kaedah JavaScript yang digunakan untuk mengisi tatasusunan dengan nilai yang ditentukan. Walau bagaimanapun, adalah penting untuk memahami bahawa Array.fill() beroperasi pada rujukan dan bukannya nilai.
Masalah: Rujukan lwn. Nilai
Pertimbangkan kod berikut:
let m = Array(6).fill(Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 1 instead of 0
Di sini, kami mencipta matriks 6x12 menggunakan Array.fill(). Walau bagaimanapun, apabila kita menetapkan m0 kepada 1, m1 secara tidak dijangka turut menjadi 1. Ini kerana Array.fill() mencipta tatasusunan dalam yang kesemuanya merujuk kepada objek Tatasusunan yang sama.
Tingkah Laku Yang Dijangka: Nilai
Daripada merujuk, kami mungkin mahu menyalin nilai sebaliknya. Dalam erti kata lain, menukar m0 seharusnya tidak menjejaskan m1.
Penyelesaian: Menggunakan Array.from()
Untuk memaksa Array.fill() menyalin nilai dan bukannya rujukan , kita boleh menggunakan Array.from() seperti berikut:
let m = Array.from({length: 6}, e => Array(12).fill(0)); m[0][0] = 1; console.log(m[1][0]); // Outputs 0 as expected
Array.from() memastikan setiap tatasusunan dalam ialah objek yang berbeza, menghalang perkongsian nilai yang tidak diingini.
Kesimpulan
Apabila menggunakan Array.fill(), ketahui perbezaan antara rujukan dan nilai. Untuk situasi di mana anda ingin menyalin nilai dan bukannya rujukan, pertimbangkan untuk menggunakan Array.from() sebaliknya.
Atas ialah kandungan terperinci Mengapakah `Array.fill()` JavaScript Mencipta Rujukan Daripada Salinan dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!