การตรวจสอบข้อมูลว่าเป็น number หรือไม่ใน JavaScript

number เป็น Data Type ชนิดหนึ่งใน JavaScript เป็นข้อมูลชนิดตัวเลข และเนื่องจากใน JavaScript มีเฉพาะ Number ไม่มี Integer ไม่มี Float ดังนั้นการเป็น Number จึงหมายถึงทั้ง จำนวนเต็มและทศนิยม ดังนั้นการ ตรวจสอบว่าค่าที่ได้นั้นเป็น Number รึเปล่าจึงหมายถึงทั้งจำนวนเต็มและเลขทศนิยม

เราสามารถใช้ function isNaN() ในการตรวจสอบว่าตัวแปรนั้นเป็น Number หรือไม่ แต่ค่าที่ได้จากฟังก์ชั่นจะเป็น false เมื่อค่าที่ส่งเข้าไปเป็นตัวเลข เนื่องจากชื่อ ฟังก์ชั่นย่อมาจาก is Not a Number แสดงว่าจะ return true เมื่อข้อมูลไม่ใช่ตัวเลข

ตัวอย่างการใช้งาน

หรือใช้ในการทำ Validation

เราสามารถนำเอา function นี้ไปประยุกต์ใช้งานได้อีกหลายๆรูปแบบที่เกี่ยวกับตัวเลข

การกำหนดตำแน่งของเลขทศนิยมใน Javascript

การกำหนดเลขนัยสำคัญหรือการกำหนดตำแหน่งของเลขทศนิยมใน JavaScript นั้นสามารถทำได้ง่ายมากโดยการใช้ toFixed() มาจากคำว่า Fixed point หรือภาษาไทยเรียกว่าจุดตรึง ซึ่ง toFixed() เป็น method ที่อยู่ใน Number.prototype นั่นก็หมายความว่า ตัวแปรที่มี type เป็น number(ใน JavaScript นั้น ไม่ว่าจะเป็นจำนวนเต็มหรือทศนิยมล้วนแล้วแต่มี type เป็น number ทั้งสิ้น) ล้วนแล้วแต่สามารถเรียก method toFixed() ขึ้นมาใช้งานได้ โดยใน toFixed() จะรับ argument มา 1 ตัว เป็นจำนวนทศนิยมที่ต้องการ

1
2
var pi = 3.14159265359;
pi.toFixed(2);

ผลลัพธ์ที่ได้จะออกมาเป็น 3.14 และถ้าเกิดเราเอาตัวเลขที่เป็นจำนวนเต็มมาเรียก method toFixed() จะเป็นการใส่ 0 เข้าไปเพิ่ม ยกตัวอย่างเช่น

1
2
var x = 10;
x.toFixed(2);

ผลลัพธ์ที่ได้จะออกมาเป็น 10.00 สิ่งที่สำคัญอีกอย่างก็คือสิ่งที่ได้ออกมาจาก toFixed() จะได้ผลลัพธืที่มี type เป็น string ไม่ใช้ number ดังนั้นถ้าเราเกิดไม่อยากได้ตัวเลข 0 เราก็สามารถตัด 0 ออกได้แบบนี้

1
2
var x = 10;
x.toFixed(2).replace('.00', '');

หรือถ้าจะให้ครอบคลุมมากขึ้นก็ต้องอาศัย regular expression เข้ามาช่วยในการตัด 0 ที่อยู่ด้านท้ายออก

1
2
var x = 1.3;
x.toFixed(4).replace(new RegExp('[.]?0*$'),'');

จากตัวอย่างจะเห็นว่า ค่าที่ได้จาก x.toFixed(4) จะได้เป็น 1.3000 เพราะเราส่ง 4 เข้าไปใน toFixed() หลังจากนั้นเราจะใช้ .replace แล้วส่ง regular expression เข้าไปเพื่อตัด 0 ออก ส่วน regular expression นี้ก็ไม่มีอะไรมากแค่ถ้ามีจุดอยู่ก่อนหน้า 0 ให้เอาจุดออกด้วย โดยใส่เป็น optional ซะ ไว้จะมาลง detail เรื่องการเขียน regular expression อีกที สำหรับวันนี้หวังว่าคงได้ประโยชน์กันไปบ้างไม่มากก็น้อย