ใช้ Number() แปลง Array [50, 100] เป็น Number จะได้ NaN
ตัวอย่างโค้ด
<!DOCTYPE html>
<html>
<body>
<p>Convert [50,100] to Number</p>
<script>
var myVal = [50, 100];
document.write("Number: " + Number(myVal)); // ผลลัพธ์: NaN
</script>
</body>
</html>
คำอธิบาย Mechanism (ToPrimitive)
Number([50, 100])→ เรียก[50,100].valueOf()→ คืน Array (Object)- → เรียก
[50,100].toString()→"50,100"(Join ด้วย Comma) - →
Number("50,100")→ NaN (Comma ไม่ใช่ Valid Number Format)
Array → Number Conversion Table
| Array | toString() | Number() | Boolean() |
|---|---|---|---|
[] | "" | 0 | true |
[50] | "50" | 50 | true |
[50, 100] | "50,100" | NaN | true |
["hello"] | "hello" | NaN | true |
วิธีแปลง Array เป็น Number ที่มีความหมาย
// Single Element Array
Number([42]) // 42
Number([3.14]) // 3.14
// Multiple Elements → NaN (ใช้ Reduce/Join แทน)
[1, 2, 3].reduce((a, b) => a + b) // 6
[10, 20].join('') // "1020" → Number: 1020
// Check ก่อนแปลง
const arr = [50, 100];
const num = arr.length === 1 ? Number(arr[0]) : NaN;
สรุป: Array หลาย Element → Number = NaN (เพราะ toString() ใส่ Comma) — ควร Handle แยกต่างหาก