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
185 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!

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