Rumah >hujung hadapan web >tutorial js >Mengapakah `map()` Mengembalikan Nilai Tidak Ditakrifkan pada Tatasusunan yang Dibuat dengan `Array(kiraan) baru`?

Mengapakah `map()` Mengembalikan Nilai Tidak Ditakrifkan pada Tatasusunan yang Dibuat dengan `Array(kiraan) baru`?

Patricia Arquette
Patricia Arquetteasal
2024-12-07 07:00:12734semak imbas

Why Does `map()` Return Undefined Values on Arrays Created with `new Array(count)`?

Memahami Gelagat peta pada Tatasusunan Dibuat dengan Tatasusunan(kiraan) baharu

Apabila bekerja dengan tatasusunan JavaScript, perlu diperhatikan tingkah laku yang pelik dipamerkan oleh tatasusunan yang dibuat menggunakan sintaks Tatasusunan(bilangan) baharu.

Sebagaimana ditunjukkan dalam coretan kod di bawah, menggunakan map() pada tatasusunan jarang (susunan yang mengandungi elemen tidak ditentukan) yang dibuat dengan Tatasusunan(kiraan) baharu menghasilkan tatasusunan nilai yang tidak ditentukan:

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

Sebaliknya, melaksanakan operasi yang sama pada tatasusunan padat (susunan tanpa unsur yang tidak ditentukan) dengan panjang yang sama berfungsi seperti dijangka:

var y = [undefined, undefined, undefined];
y.map(function() { return 0; }); // [0, 0, 0]

Perbezaan ini berpunca daripada fakta bahawa Array(count) baharu mencipta tatasusunan jarang, bermakna ia tidak memberikan nilai lalai kepada elemennya. Akibatnya, map() tidak boleh melakukan sebarang operasi pada elemen yang tidak ditentukan, menghasilkan tatasusunan nilai yang tidak ditentukan.

Untuk mengatasi isu ini, anda boleh sama ada menggunakan sintaks tatasusunan literal untuk mencipta tatasusunan padat atau isikan secara eksplisit tatasusunan jarang dengan nilai lalai yang dikehendaki menggunakan kaedah seperti Array.prototype.fill().

Atas ialah kandungan terperinci Mengapakah `map()` Mengembalikan Nilai Tidak Ditakrifkan pada Tatasusunan yang Dibuat dengan `Array(kiraan) 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