Rumah >hujung hadapan web >tutorial js >Mengapa Kaedah `peta` JavaScript Melangkau Elemen Tidak Ditakrifkan dalam Tatasusunan Jarang?

Mengapa Kaedah `peta` JavaScript Melangkau Elemen Tidak Ditakrifkan dalam Tatasusunan Jarang?

Patricia Arquette
Patricia Arquetteasal
2024-12-10 01:10:10119semak imbas

Why Does JavaScript's `map` Method Skip Undefined Elements in Sparse Arrays?

Memahami Penciptaan Array dan Kaedah peta dalam JavaScript

Apabila mencipta tatasusunan menggunakan ungkapan Array(count) baharu, anda pada asasnya mencipta susunan jarang. Tatasusunan jarang mengandungi "lubang" atau elemen yang tidak ditentukan pada indeks yang belum diberikan nilai secara eksplisit. Tingkah laku ini berbeza daripada tatasusunan yang dibuat menggunakan sintaks literal tatasusunan ([1, 2, 3]), yang mempunyai nilai yang ditentukan untuk semua elemen.

Kaedah peta, sebaliknya, cuba menggunakan fungsi transformasi kepada setiap elemen tatasusunan. Walau bagaimanapun, apabila digunakan pada tatasusunan jarang, kaedah peta melangkau unsur yang tidak ditentukan dan hanya mengubah unsur yang ditentukan. Ini menerangkan tingkah laku yang kelihatan tidak dijangka yang diperhatikan dalam coretan kod yang diberikan.

Menyelesaikan Isu

Untuk menyelesaikan isu ini, seseorang boleh menangani keterbatasan tatasusunan sebelum menggunakan kaedah peta. Kaedah Array.prototype.fill() boleh digunakan untuk menetapkan nilai lalai (seperti undefined) kepada semua elemen dalam tatasusunan. Sebagai alternatif, kaedah peta boleh digabungkan dengan pernyataan bersyarat untuk hanya mengubah elemen yang ditentukan:

var x = new Array(3).fill(undefined);
var y = x.map(function(e) { return e !== undefined ? 0 : 1; });
console.log(y); // [1, 1, 1]

Atas ialah kandungan terperinci Mengapa Kaedah `peta` JavaScript Melangkau Elemen Tidak Ditakrifkan dalam Tatasusunan Jarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn