Khi bạn đang làm việc với dữ liệu từ nhiều nguồn khác nhau, một số dữ liệu này có thể đến ở định dạng không chính xác. Và bạn sẽ cần sửa các định dạng đó trước khi thực hiện một số hành động nhất định trên dữ liệu.
Đây chỉ là một trong nhiều lý do khiến bạn có thể muốn tìm hiểu cách chuyển đổi một chuỗi thành một số trong JavaScript.
Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi chuỗi thành số bằng cách thực hiện các phương pháp khác nhau và cung cấp các ví dụ cho từng phương pháp.
Trước khi chúng ta bắt đầu, một cách phổ biến để phân biệt một giá trị chuỗi là nó luôn được đặt trong dấu nháy đơn hoặc nháy kép, trong khi một số thì không:
"John Doe" -> String
'John Doe' -> String
"12" -> String
12 -> Number
Giả sử chúng ta có chuỗi được lưu trữ trong một biến. Một cách tốt để kiểm tra xem một biến có phải là một chuỗi hay không bằng cách sử dụng typeof
nhà điều hành:
let name = "John Doe";
console.log(typeof name) // "string"
Bây giờ chúng ta hãy tìm hiểu cách chuyển đổi một chuỗi thành một số.
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Number()
Chức năng
Hàm Số là một phương pháp mạnh mẽ mà bạn có thể sử dụng để chuyển đổi chuỗi hoặc các giá trị khác thành loại Số. Phương pháp này cũng sẽ trở lại NaN
nếu giá trị không thể được chuyển đổi:
console.log(Number('212')) // 212
console.log(Number("2124")) // 2124
console.log(Number('0.0314E+2')); // 3.14
console.log(Number("Hello World")) // NaN
console.log(Number(undefined)) // NaN
Điều này cũng hoạt động với các biến:
let age = "12";
let password = "John12";
console.log(Number(age)) // 12
console.log(Number(password)) // NaN
Đây là một trong những phương thức dễ sử dụng nhất vì nó cũng hoạt động với các giá trị thập phân và trả về các giá trị mà không cần thao tác với chúng:
let answer = "12.0";
let answer = "12.0267";
console.log(Number(answer)) // 12.0
console.log(Number(answer)) // 12.0267
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng parseInt()
và parseFloat()
Chức năng
cả hai parseInt()
và parseFloat()
các hàm nhận một chuỗi làm tham số, sau đó chuyển đổi chuỗi đó thành một số nguyên/số.
Bạn cũng có thể dùng parseInt()
để chuyển đổi một số không nguyên thành một số nguyên, trong khi parseFloat()
là phương pháp mạnh mẽ hơn vì nó có thể duy trì số float và một số logic toán học:
console.log(parseInt('12')) // 12
console.log(parseInt('12.092')) // 12.092
console.log(parseInt(' 3.14 ')) // 3
console.log(parseInt('0.0314E+2')) // 0
console.log(parseInt('John Doe')) // NaN
console.log(parseFloat('12')) // 12
console.log(parseFloat('12.092')) // 12.092
console.log(parseFloat(' 3.14 ')) // 3.14
console.log(parseFloat('0.0314E+2')) // 3.14
console.log(parseFloat('John Doe')) // NaN
Như thường lệ, điều này cũng hoạt động với các biến:
let age = "12";
console.log(parseInt(age)) // 12
console.log(parseFloat(age)) // 12
Lưu ý: Các parseFloat()
Hàm sẽ luôn trả về NaN khi không thể chuyển đổi ký tự của chuỗi thành số:
console.log(parseFloat('N0.0314E+2')) // NaN
Cách chuyển đổi một chuỗi thành một số bằng toán tử cộng một ngôi (+
)
Đây là một trong những cách nhanh nhất và dễ dàng nhất để chuyển đổi thứ gì đó thành số. Tôi đã nói “cái gì đó” bởi vì nó chuyển đổi nhiều thứ hơn là chỉ biểu diễn chuỗi của các số và số float – nó cũng hoạt động trên các giá trị không phải chuỗi true
, false
và null
hoặc một chuỗi rỗng.
Một ưu điểm (hoặc cũng là nhược điểm) của phương pháp này là nó không thực hiện bất kỳ thao tác nào khác trên số như làm tròn số hoặc chuyển đổi nó thành số nguyên.
Chúng ta hãy xem xét một số ví dụ:
console.log(+'100'); // 100
console.log(+'100.0373'); // 100.0373
console.log(+''); // 0
console.log(+null); // 0
console.log(+true); // 1
console.log(+false); // 0
console.log(+'John Doe'); // NaN
console.log(+'0.0314E+2'); // 3.14
Như mong đợi, điều này cũng hoạt động với các biến:
let age = "74";
console.log(+age); // 74
Nếu bạn so sánh ParseInt()
và Toán tử một ngôi cộng, cuối cùng bạn có thể sử dụng Toán tử một ngôi cộng trên parseInt()
phương pháp trong một số tình huống.
Ví dụ: giả sử bạn đang nhận các giá trị ngẫu nhiên – giả sử giá trị UUID tại một số điểm có thể bắt đầu bằng số và tại các điểm khác có thể bắt đầu bằng các chữ cái. Điều này có nghĩa là sử dụng parseInt()
chức năng đôi khi có thể trở lại NaN
và những lần khác trả về các ký tự đầu tiên là số:
console.log(parseInt("cb34d-234ks-2343f-00xj")); // NaN
console.log(parseInt("997da-00xj-2343f-234ks")); // 997
console.log(+"cb34d-234ks-2343f-00xj"); // NaN
console.log(+"997da-00xj-2343f-234ks"); // NaN
Cách chuyển đổi một chuỗi thành một số bằng các phương thức toán học JavaScript
Một cách khác để chuyển đổi chuỗi thành số là sử dụng một số phương thức toán học của JavaScript.
Bạn có thể dùng floor()
Phương thức này sẽ làm tròn giá trị đã truyền xuống số nguyên gần nhất. Các ceil()
phương pháp ngược lại với floor()
, làm tròn lên đến số nguyên gần nhất. cuối cùng là round()
phương pháp nằm giữa cả hai, chỉ làm tròn số đến số nguyên gần nhất (lên hoặc xuống tùy thuộc vào mức độ gần).
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Math.floor()
Phương pháp JavaScript
Giống như tôi đã giải thích ở trên, điều này sẽ luôn trả về một số nguyên. Giả sử chúng ta chuyển một giá trị float – nó sẽ làm tròn giá trị xuống số nguyên gần nhất. Điều này sẽ trở lại NaN
nếu chúng ta chuyển các chữ cái dưới dạng một chuỗi hoặc bất kỳ ký tự không nguyên nào khác:
console.log(Math.floor("14.5")); // 14
console.log(Math.floor("654.508")); // 654
console.log(Math.floor("0.0314E+2")); // 3
console.log(Math.floor("34d-234ks")); // NaN
console.log(Math.floor("cb34d-234ks-2343f-00xj")); // NaN
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Math.ceil()
Phương pháp JavaScript
Điều này khá giống và sẽ chỉ làm tròn các giá trị float của chúng ta để luôn trả về một số nguyên:
console.log(Math.ceil("14.5")); // 15
console.log(Math.ceil("654.508")); // 655
console.log(Math.ceil("0.0314E+2")); // 3
console.log(Math.ceil("34d-234ks")); // NaN
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Math.round()
Phương pháp JavaScript
Điều này hoạt động giống như cả hai phương pháp nhưng chỉ trả về toàn bộ số sau khi làm tròn đến số nguyên gần nhất:
console.log(Math.round("14.5")); // 15
console.log(Math.round("654.508")); // 655
console.log(Math.round("0.0314E+2")); // 3
console.log(Math.round("34d-234ks")); // NaN
Tất cả các phương thức Toán học trên cũng hoạt động với các biến:
let age = "14.5";
console.log(Math.floor(age)); // 14
console.log(Math.ceil(age)); // 15
console.log(Math.round(age)); // 15
Cách chuyển đổi một chuỗi thành một số bằng một số phép toán
Đây thực sự không phải là một phương pháp, nhưng nó đáng để biết. Cho đến giờ, chúng ta đã thảo luận các phương pháp trực tiếp để đạt được chuyển đổi này – nhưng trong một số trường hợp, bạn có thể chỉ muốn thực hiện các phép toán này để trợ giúp chuyển đổi.
Chúng bao gồm phép nhân với 1
chia cho 1
và cũng trừ bằng . Khi chúng tôi thực hiện bất kỳ thao tác nào trong số này trên một chuỗi, chúng sẽ được chuyển đổi thành số nguyên:
console.log("14.5" / 1); // 14.5
console.log("0.0314E+2" / 1); // 3.14
console.log("14.5" * 1); // 14.5
console.log("0.0314E+2" * 1); // 3.14
console.log("14.5" - 0); // 14.5
console.log("0.0314E+2" - 0); // 3.14
Như thường lệ, điều này cũng hoạt động với các biến:
let age = "14.5";
console.log(age / 1); // 14.5
console.log(age * 1); // 14.5
console.log(age - 0); // 14.5
Phần kết luận
Trong bài viết này, chúng ta đã xem xét các phương pháp và cách tiếp cận khác nhau để chuyển đổi chuỗi thành số nguyên trong JavaScript.
Tốt nhất bạn nên biết rằng có nhiều phương pháp để bạn có thể chọn phương pháp phù hợp nhất với mình và áp dụng nó trong mọi tình huống.