Rumah > hujung hadapan web > tutorial js > Mengapakah `['1', '2', '3'].map(parseInt)` Mengembalikan `[1, NaN, NaN]` dalam JavaScript?

Mengapakah `['1', '2', '3'].map(parseInt)` Mengembalikan `[1, NaN, NaN]` dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-27 21:00:19
asal
276 orang telah melayarinya

Why Does `['1', '2', '3'].map(parseInt)` Return `[1, NaN, NaN]` in JavaScript?

Mengendalikan Radix dalam Array#map parseInt Calls

Dalam konteks tatasusunan JavaScript, kaedah peta mengubah setiap elemen menggunakan fungsi panggil balik yang disediakan . Walaupun peta boleh berjaya menggunakan Math.sqrt pada nombor, kelakuannya dengan parseInt pada rentetan boleh mengelirukan.

Orang mungkin menjangkakan ['1', '2', '3'].map(parseInt) akan kembali [1, 2, 3]. Walau bagaimanapun, ia sebenarnya menghasilkan [1, NaN, NaN]. Keanehan ini berpunca daripada parameter radix parseInt.

Peranan Radix dalam parseInt

parseInt menjangkakan dua argumen: nilai yang akan ditukar dan radix. Jika radix diabaikan, ia menggunakan "tekaan terbaik" berdasarkan input.

Dalam kes ['1', '2', '3'].map(parseInt), radix menjadi indeks setiap elemen semasa lelaran tatasusunan. Oleh itu, ia akhirnya memanggil:

parseInt('1', 0); // Correct (radix defaults to 10)
parseInt('2', 1); // Invalid radix (not a number base)
parseInt('3', 2); // Invalid number in base 2
Salin selepas log masuk

Menyelesaikan Isu

Untuk menyelesaikan isu ini dan mendapatkan hasil yang diingini [1, 2, 3], anda boleh gunakan fungsi pembungkus seperti ini:

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

atau dengan ES2015 sintaks:

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

Di sini, radix ditetapkan secara eksplisit kepada 10, memastikan penghuraian yang betul.

Atas ialah kandungan terperinci Mengapakah `['1', '2', '3'].map(parseInt)` Mengembalikan `[1, NaN, NaN]` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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