บทนำ
เมื่อใช้ Number() แปลงอาร์เรย์ (Array) ใน JavaScript ผลลัพธ์จะขึ้นอยู่กับเนื้อหาในอาร์เรย์
ตัวอย่างโค้ด
<!DOCTYPE html>
<html>
<body>
<p>แปลง ["demo"] เป็น Number</p>
<script>
var myVal = ["demo"];
document.write("Number: " + Number(myVal));
</script>
</body>
</html>
ผลลัพธ์
Number: NaN
คำอธิบาย
- JavaScript จะพยายามแปลงอาร์เรย์เป็น string ก่อนโดยใช้
toString()ซึ่งจะรวม elements ด้วย comma ["demo"].toString()→"demo"- จากนั้นแปลง string
"demo"เป็น Number →NaN(เพราะไม่ใช่ตัวเลข)
ตารางเปรียบเทียบการแปลง Array
| Array | toString() | Number() |
|---|---|---|
| [] | "" | 0 |
| [5] | "5" | 5 |
| ["5"] | "5" | 5 |
| ["demo"] | "demo" | NaN |
| [1,2] | "1,2" | NaN |
| [null] | "" | 0 |
| [undefined] | "" | 0 |
หลักการสำคัญ
- อาร์เรย์ว่าง
[]→ 0 - อาร์เรย์มี 1 element ที่เป็นตัวเลข/ตัวเลขใน string → ตัวเลขนั้น
- อาร์เรย์มี 1 element ที่ไม่ใช่ตัวเลข → NaN
- อาร์เรย์มีหลาย element → NaN (เพราะ string มี comma)