ฟังก์ชัน callback in Array.mapมีพารามิเตอร์สามตัว :
จากหน้า Mozillaเดียวกันที่คุณเชื่อมโยงกับ:
การเรียกกลับถูกเรียกด้วยสามอาร์กิวเมนต์: ค่าขององค์ประกอบ, ดัชนีขององค์ประกอบและวัตถุ Array ที่ถูกสำรวจ "
ดังนั้นถ้าคุณเรียกฟังก์ชันparseIntที่คาดว่าจะมีอาร์กิวเมนต์สองตัวอาร์กิวเมนต์ที่สองจะเป็นดัชนีขององค์ประกอบ
ในกรณีนี้คุณจะสิ้นสุดการโทรparseIntด้วย radix 0, 1 และ 2 ตามลำดับ อันแรกเหมือนกันกับที่ไม่ได้จัดหาพารามิเตอร์ดังนั้นมันจึงเป็นค่าดีฟอลต์จากอินพุต (ฐาน 10 ในกรณีนี้) ฐาน 1 เป็นฐานตัวเลขที่เป็นไปไม่ได้และ 3 ไม่ใช่หมายเลขที่ถูกต้องในฐาน 2:
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
ดังนั้นในกรณีนี้คุณต้องใช้ฟังก์ชัน wrapper:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
หรือด้วยไวยากรณ์ ES2015 +:
['1','2','3'].map(num => parseInt(num, 10));
(ในทั้งสองกรณีเป็นการดีที่สุดที่จะให้ Radix อย่างชัดเจนparseIntตามที่แสดงเพราะไม่เช่นนั้นมันจะทำการเดา Radix ตามอินพุต) ในเบราว์เซอร์รุ่นเก่าบางรุ่น 0 ที่เป็นผู้นำทำให้เกิดการเดาเลขฐานแปดซึ่งมีแนวโน้มว่าจะเป็นปัญหา เดา hex ถ้าสตริงเริ่มต้นด้วย0x)
.map(parseFloat)เพราะใช้พารามิเตอร์เดียว