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

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.
javascript convert string to int
Vậy là trong Javascript bạn có thể dùng parseInt để convert từ number/string của number sang integer.
Bất chợt, một thói quen hiện lên, bạn click vào stackoverflow.com, link đó nằm ở top luôn cơ mà.
stackoverflow javascript convert string to int

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.

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.
Test hiệu năng

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

Tiep Phan - 1/19/2017

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Tiep Phan

7 bài viết.
21 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
19 6
Giới thiệu series học Lập trình Angular (Angular 2) Xin chào các bạn, trong thời gian vừa qua cộng đồng Javascript lại đón nhận một đứa con mới đến...
Tiep Phan viết hơn 1 năm trước
19 6
White
12 3
Thử Nghiệm Với Angular – Forms Trong Angular Hầu hết các ứng dụng web hiện đại đều làm việc với forms để thu thập dữ liệu từ người dùng. Angular c...
Tiep Phan viết 1 năm trước
12 3
White
9 6
Tháng 32017, Angular team đã phát hành Angular 4, vậy Angular 4 có gì mới, có những gì thay đổi mà chúng ta cần lưu ý. Bài này sẽ giới thiệu cho cá...
Tiep Phan viết hơn 1 năm trước
9 6
Bài viết liên quan
White
3 0
Hẳn các bạn vẫn còn nhớ trong một số bài trước chúng ta có nói về Observable trong ứng dụng Angular, vậy Observable là gì, nó có quan hệ gì với Ang...
Tiep Phan viết 9 tháng trước
3 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
7 bài viết.
21 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!