Rumah >hujung hadapan web >tutorial js >Mengapakah `Array.map()` dengan `parseInt()` Menghasilkan Keputusan Tidak Dijangka dalam 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!