แตกต่างจาก parseInt() ที่หยุดอ่าน عندตัวอักษรแรกที่ไม่ใช่ตัวเลข ฟังก์ชันนี้ดึงตัวเลขทุกตัวในสตริงมารวมกัน
ตัวอย่าง
parseInt('454ffdg54hg53') // 454 (หยุดที่ f)
parseInteger('454ffdg54hg53') // 4545453 (ดึงทุกตัวเลข)
ตัวอย่างโค้ด
const numStr = '454ffdg54hg53';
const parseInteger = numStr => {
let res = 0;
for (let i = 0; i < numStr.length; i++) {
if (!+numStr[i]) continue; // ไม่ใช่ตัวเลข (0 จะถูกข้ามด้วย - bug)
res = res * 10 + +numStr[i];
}
return res;
};
console.log(parseInteger(numStr));
บั๊กในโค้ดต้นฉบับ
!+numStr[i] จะเป็น true สำหรับ '0' เพราะ +'0' = 0 (falsy) → ตัวเลข 0 จะถูกข้าม
โค้ดที่ถูกต้อง
const parseInteger = numStr => {
let res = 0;
for (const ch of numStr) {
if (ch >= '0' && ch <= '9') {
res = res * 10 + (ch - '0');
}
}
return res;
};
ผลลัพธ์
4545453