Rumah > hujung hadapan web > tutorial js > Mengapakah `Array.map()` dengan `parseInt()` Menghasilkan Keputusan Tidak Dijangka dalam JavaScript?

Mengapakah `Array.map()` dengan `parseInt()` Menghasilkan Keputusan Tidak Dijangka dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-12-17 11:10:27
asal
207 orang telah melayarinya

Why Does `Array.map()` with `parseInt()` Produce Unexpected Results in JavaScript?

Menghuraikan Nombor dalam Array.map() dengan parseInt

Dalam Javascript, fungsi Array.map() menggunakan fungsi panggil balik untuk setiap elemen tatasusunan. Walau bagaimanapun, fungsi parseInt(), apabila digunakan dalam konteks ini, boleh menghasilkan hasil yang tidak dijangka.

Dalam contoh yang disediakan:

['1','2','3'].map(parseInt);
Salin selepas log masuk

parseInt() menghasilkan [1, NaN, NaN] bukannya yang dijangkakan [1, 2, 3]. Tingkah laku ini timbul kerana parseInt() mengambil dua argumen: rentetan untuk dihuraikan dan radix pilihan (asas).

Fungsi panggil balik Array.map() menyediakan tiga parameter: nilai elemen, indeksnya dan tatasusunan itu sendiri. Apabila menggunakan parseInt() tanpa menyatakan radix, ia menggunakan parameter kedua (indeks) sebagai radix.

Untuk ['1','2','3'], nilai radix yang digunakan oleh parseInt () menjadi 0, 1 dan 2. Memandangkan radix 1 tidak sah dan 3 tidak boleh diwakili dalam binari (radix 2), penghuraian gagal, mengakibatkan dalam NaN.

Untuk membetulkan tingkah laku ini, sediakan radix eksplisit untuk parseInt() dalam fungsi pembalut:

['1','2','3'].map(function(num) { return parseInt(num, 10); });
Salin selepas log masuk

Sebagai alternatif, gunakan sintaks ES2015:

['1','2','3'].map(num => parseInt(num, 10));
Salin selepas log masuk

Dengan menyatakan radix 10, kami memastikan parseInt() menghuraikan dengan betul rentetan menjadi integer.

Atas ialah kandungan terperinci Mengapakah `Array.map()` dengan `parseInt()` Menghasilkan Keputusan Tidak Dijangka dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan