Làm thế nào để ép kiểu Integer cho một số hoặc một string số trong Javascript

1457

Giới thiệu bài toán

Đã bước chân vào “thế giới” Javascript, nhiều khi bạn thật sự điên cuồng. Có quá nhiều thứ được biết đến ở Javascript mà bạn cần tìm hiểu để áp dụng thành thục cho dự án của mình. Và đôi khi cái của dở hơi này nó làm bạn phát khùng lên với nó.

Bây giờ thử làm một bài toán thế này: cho một số hoặc một string bao gồm các chữ số, hãy chuyển nó về kiểu Integer.

Giải quyết vấn đề

Rất nhanh chóng, các bạn có thể dùng Google thần công. Ok rồi, trang đầu có cả đống ví dụ luôn.

screen-shot-2017-02-03-at-2-15-41-pm

Oh, thêm một cách mới: Math.floor và bạn thử với ví dụ chẳng hạn string ‘45.05’; kết quả nhận được đúng như mong đợi là 45.

Hum, có vẻ ok đấy.

Giờ thử với số âm xem sao: -45.05. parseInt cho ra kết quả -45 trong khi Math.floor cho ra -46, không ổn rồi.

Vậy là bạn sẽ không đồng nhất việc dùng parseInt vs Math.floor đươc nữa.

Tham gia ngay để biết thêm về cuộc chiến

Level up

Một ngày nọ, bạn đọc được ở đâu đó có người viết var intValue = num >> 0;. Wtf, kiểu Number trong Javascript là kiểu số thực, mà trong các ngôn ngữ khác như C/C++ thì chỉ có kiểu Integer mới dùng phép dịch bit được, tại sao trong đoạn code trên lại viết như trên. Và bạn thử với một đoạn code nho nhỏ.

‘45.05’ >> 0 -> kết quả bằng 45‘-45.05’ >> 0 cho kết quả -45.

Wow wow, giống hệt với kết quả khi thực hiện parseInt luôn mới nể.

Sau đó bạn thử với dịch << kết quả nhận được cũng tương đương. Có vẻ hay ho rồi.

Giờ thử chơi với hai của giời là undefinednull.

undefined >> 0null >> 0 đều cho kết quả bằng 0.

parseInt(undefined)parseInt(null) cho kết quả NaN.

~ là toán tử not bitwise, khi ~~ thì cũng tương đương với dịch >>0 hoặc <<0.

Test hiệu năng

Rảnh rỗi làm bài test xem kết quả thực thi thế nào. và kết quả cho thấy bitwise thắng áp đảo.

Lời kết

Trong bài viết này, chúng ta đã xem một số cách hay ho để convert từ number hoặc string dạng số sang kiểu số nguyên. Các bạn có thể lựa chọn cách hợp lý hoặc có thể kết hợp cho đầu vào của mình để có hiệu quả đạt như mong muốn.

Happy coding!

Link tham khảo

Techtalk via kipalog

CHIA SẺ