Rumah >hujung hadapan web >tutorial js >Mengapakah Kaedah `peta` JavaScript Gagal pada Tatasusunan Dibuat dengan `Array(bilangan) baru`?

Mengapakah Kaedah `peta` JavaScript Gagal pada Tatasusunan Dibuat dengan `Array(bilangan) baru`?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 11:23:14395semak imbas

Why Does JavaScript's `map` Method Fail on Arrays Created with `new Array(count)`?

Memahami Penciptaan Tatasusunan dan Gelagat Kaedah peta

Kaedah peta ialah alat yang berkuasa dalam JavaScript untuk mengubah elemen dalam tatasusunan. Walau bagaimanapun, anda mungkin menemui hasil yang tidak dijangka apabila menggunakannya pada tatasusunan yang dibuat dengan Tatasusunan(kiraan) baharu.

Penciptaan Tatasusunan

Sintaks Tatasusunan(kiraan) baharu mencipta tatasusunan dengan bilangan elemen tertentu . Walau bagaimanapun, elemen ini tidak dimulakan dengan sebarang nilai lalai, menyebabkan tatasusunan diisi dengan nilai yang tidak ditentukan.

Kelakuan Kaedah peta

Kaedah peta menggunakan fungsi pada setiap elemen dalam tatasusunan dan mengembalikan tatasusunan baharu dengan elemen yang diubah suai. Dalam kes tatasusunan yang dibuat dengan Tatasusunan(bilangan) baharu dan diisi dengan nilai yang tidak ditentukan, kaedah peta tidak mengubah nilai kerana undefined tidak menilai kebenaran dalam JavaScript.

Senario Dunia Sebenar

Pertimbangkan kod berikut:

var x = new Array(3);
console.log(x.map(function() { return 0; }));

Kod ini mencipta tatasusunan dengan tiga yang tidak ditentukan elemen. Apabila anda menggunakan kaedah peta, ia tidak mengubah elemen dan output kekal sebagai tatasusunan dengan nilai yang tidak ditentukan.

Penyelesaian

Untuk menyelesaikan isu ini, anda boleh mengisi tatasusunan dengan sebarang nilai (walaupun tidak ditentukan) menggunakan Array.prototype.fill(). Ini memastikan kaedah peta mempunyai nilai untuk digunakan.

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

Atas ialah kandungan terperinci Mengapakah Kaedah `peta` JavaScript Gagal pada Tatasusunan Dibuat dengan `Array(bilangan) baru`?. 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