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
Susan Sarandonasal
2024-12-17 11:10:27150semak imbas

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);

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); });

Sebagai alternatif, gunakan sintaks ES2015:

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

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!

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