Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีแปลงสตริงเป็น Integer ใน JavaScript

ใช้ parseInt() แปลงสตริงเป็นจำนวนเต็ม คืน NaN ถ้าแปลงไม่ได้

ตัวอย่างจากบทความ

<!DOCTYPE html>
<html>
  <body>
    <button onclick="display()">Check</button>
    <p id="demo"></p>
    <script>
      function display() {
        var val1 = parseInt("50") + "<br>";
        var val2 = parseInt("52.40") + "<br>";
        var val3 = parseInt(" 75 ") + "<br>";
        var res = val1 + val2 + val3;
        document.getElementById("demo").innerHTML = res;
      }
    </script>
  </body>
</html>

ไวยากรณ์ parseInt()

parseInt(string, radix)
  • string - สตริงที่ต้องการแปลง
  • radix - ฐานเลข (2-36) ควรระบุเสมอ (ค่าเริ่มต้นไม่ใช่ 10 เสมอไป)

พฤติกรรมสำคัญ

InputparseInt()คำอธิบาย
"50"50ปกติ
"52.40"52ตัดทศนิยม (ไม่ปัด)
" 75 "75ตัด whitespace นำหน้า/ท้าย
"abc"NaNไม่ใช่ตัวเลข
"10px"10อ่านจนกว่าจะเจอตัวอักษร
"0xFF"255Hex (ถ้าไม่ระบุ radix)
"010"10 หรือ 8ขึ้นอยู่กับ implementation (legacy octal)

สำคัญ: ระบุ Radix เสมอ

parseInt("10", 10);     // 10 (ฐาน 10 - ปกติ)
parseInt("10", 2);      // 2 (ฐาน 2 - binary)
parseInt("10", 8);      // 8 (ฐาน 8 - octal)
parseInt("10", 16);     // 16 (ฐาน 16 - hex)
parseInt("FF", 16);     // 255

// ไม่ระบุ radix - อาจตีความเป็น octal ในบางกรณี (legacy)
parseInt("010");        // 10 (modern) หรือ 8 (legacy)

วิธีแปลงสตริงเป็นตัวเลขอื่นๆ

1. parseFloat() - สำหรับทศนิยม

parseFloat("52.40");  // 52.4
parseFloat("3.14");   // 3.14

2. Number() - แปลงแบบเข้มงวด

Number("50");      // 50
Number("52.40");   // 52.4
Number(" 75 ");    // 75
Number("10px");    // NaN (เข้มงวดกว่า parseInt)
Number("");        // 0
Number(null);      // 0

3. Unary Plus (+) - Shortcut

+"50";      // 50
+"52.40";   // 52.4
+" 75 ";    // 75
+"10px";    // NaN

4. Bitwise OR (| 0) - Fast Integer Conversion

"50" | 0;     // 50
"52.9" | 0;   // 52 (truncate)
"abc" | 0;    // 0
// เร็วแต่จำกัดที่ 32-bit signed integer (-2^31 to 2^31-1)

การจัดการ Error

function safeParseInt(str, defaultValue = 0) {
  const result = parseInt(str, 10);
  return isNaN(result) ? defaultValue : result;
}

safeParseInt("50");      // 50
safeParseInt("abc");     // 0 (default)
safeParseInt("abc", -1); // -1 (custom default)

สรุป: เลือกใช้ไหน?

ฟังก์ชันเหมาะสำหรับคืน NaN เมื่อ
parseInt(str, 10)Integer จากสตริงที่อาจมีหน่วย (px, em)ไม่มีตัวเลขนำหน้า
parseFloat(str)Decimal numberไม่มีตัวเลขนำหน้า
Number(str)Strict conversion, ทุกชนิดไม่ใช่ตัวเลขสมบูรณ์
+strShortcut สำหรับ Number()เหมือน Number()