Khi lập trình, bạn thường cần chuyển đổi giữa các loại dữ liệu. Ví dụ: bạn có thể cần chuyển đổi một chuỗi thành một số.
Khả năng chuyển đổi loại dữ liệu này sang loại dữ liệu khác giúp bạn linh hoạt hơn khi làm việc với thông tin.
JavaScript có các phương thức tích hợp sẵn khác nhau để chuyển đổi hoặc truyền một chuỗi thành một số.
Trong bài viết này, bạn sẽ tìm hiểu một số phương thức JavaScript tích hợp sẵn có để chuyển đổi chuỗi thành số, cùng với phần giới thiệu (hoặc ôn lại!) về kiến thức cơ bản về cách hoạt động của chuỗi và số trong JavaScript.
Đây là những gì chúng tôi sẽ đề cập:
- Chuỗi trong JavaScript là gì?
- Một số trong JavaScript là gì?
- Làm cách nào để kiểm tra kiểu dữ liệu của một giá trị trong JavaScript?
- Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng
parseInt()
chức năng - Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng
parseFloat()
chức năng - 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 - Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng
Math
chức năng - Cách chuyển đổi một chuỗi thành một số bằng cách nhân và chia
1
- Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Unary
+
nhà điều hành
Chuỗi trong JavaScript là gì?
Chuỗi là một cách giao tiếp hiệu quả thông qua văn bản, chẳng hạn như lưu trữ và thao tác văn bản. Chúng là một trong những kiểu dữ liệu cơ bản nhất trong tất cả các ngôn ngữ lập trình.
Các chuỗi trong JavaScript là một kiểu dữ liệu nguyên thủy. Điều này có nghĩa là chúng được tích hợp vào ngôn ngữ theo mặc định.
Chuỗi là một chuỗi có thứ tự gồm 0 hoặc nhiều giá trị ký tự. Cụ thể, đó là một chuỗi gồm một hoặc nhiều ký tự có thể là chữ cái, số hoặc ký hiệu (chẳng hạn như dấu chấm câu).
Nói chung, bạn có thể biết liệu một giá trị dữ liệu có phải là một chuỗi hay không nếu giá trị đó được đặt trong dấu ngoặc kép, chẳng hạn như dấu ngoặc đơn hoặc dấu ngoặc kép.
Cụ thể, có ba cách bạn có thể tạo một chuỗi trong JavaScript:
- Bằng cách sử dụng dấu nháy đơn.
- Bằng cách sử dụng dấu ngoặc kép.
- Bằng cách sử dụng backticks.
Đây là cách tạo một chuỗi bằng dấu nháy đơn:
// string created using single quotes ('')
let favePhrase="Hello World!";
Đây là cách tạo một chuỗi bằng cách sử dụng dấu ngoặc kép:
// string created using double quotes ("")
let favePhrase = "Hello World!";
Và đây là cách tạo một chuỗi bằng backticks:
// string created using backticks (``)
let favePhrase = `Hello World!`;
Cách cuối cùng để tạo chuỗi trong JavaScript còn được gọi là mẫu chữ.
Các số cho phép bạn biểu diễn các giá trị số và thực hiện các phép toán cũng như phép tính.
Các số trong JavaScript là một kiểu dữ liệu nguyên thủy – giống như các chuỗi.
Không giống như các ngôn ngữ lập trình khác, bạn không cần chỉ định loại số bạn muốn tạo. Ví dụ: bạn không cần phải đề cập đến việc số đó sẽ là số nguyên hay số float.
Trong JavaScript, có một số loại số khác nhau (cả dương và âm) được tích hợp trong ngôn ngữ:
- số nguyên. Số nguyên là một giá trị số không bao gồm phần thập phân – còn được gọi là số tròn chục hoặc số nguyên.
- Phao nổi. Số float là một số có phần thập phân và ít nhất một số sau dấu thập phân.
- Số mũ là những số có thể là số nguyên hoặc số thực và được theo sau bởi một
e
. Cáce
biểu thị phép nhân một số với10
nâng lên một sức mạnh nhất định. - Số nhị phân (còn được gọi là cơ số 2). Nhị phân là một hệ thống số chỉ bao gồm hai số:
và
1
. Nó sử dụng 8 bit để biểu diễn một byte. Số bắt đầu bằng mộtTheo sau là một
b
theo sau là một số 8 bit. - Số bát phân (hay còn gọi là cơ số 8). Một số bát phân bắt đầu bằng một
theo sau là các chữ số bát phân nằm trong khoảng từ
0 - 7
. - Số thập lục phân (còn được gọi là cơ số 16). Một số thập lục phân bắt đầu bằng một
theo sau bởi một trong hai
x
hoặcX
. Sau đó, có thể có sự kết hợp của các chữ số thập lục phân từ0 - 9
và các chữ cái khác nhau, từA - F
(hoặca - f
). Bức thưA - F
được liên kết với các giá trị10 -15
.
// integer
let num = 47;
// float
let num = 47.32;
// exponential - to represent large numbers
let num = 477e2; // equal to multiplying 477 to 10 to the power of 2 (or 100) which results in 47700
// exponential - to represent small numbers
let num = 477e-2; // equal to dividing 477 to 10 to the power of 2 (or 100) which results in 4.77
// binary
let num = 0b1111; // stands for 15
// octal
let num = 023; // stands for 19
// hexadecimal
let num = 0xFF; // stands for 255
Một điều cần lưu ý là những con số không nên được bao quanh bởi dấu ngoặc kép – điều đó sẽ tự động biến chúng thành một chuỗi.
// this is a string not a number!
let num = '7';
Làm cách nào để kiểm tra loại dữ liệu của một giá trị trong JavaScript?
Để tránh mắc lỗi và kiểm tra kỹ loại dữ liệu của một giá trị trong JavaScript, hãy sử dụng typeof
nhà điều hành.
Trước đó tôi đã đề cập rằng các số được đặt trong dấu ngoặc kép là các chuỗi.
Bạn có thể tự kiểm tra điều đó bằng cách làm như sau:
let num = '7';
console.log(typeof num)
// string
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng parseInt()
Chức năng
Cú pháp chung cho parseInt()
chức năng như sau:
parseInt(string, radix)
Các parseInt()
hàm nhận hai đối số: một chuỗi làm đối số thứ nhất và một cơ số làm đối số tùy chọn thứ hai.
Chuỗi là giá trị cần chuyển thành số.
Cơ số chỉ định hệ thống số toán học mà bạn muốn sử dụng và cơ số của số sẽ được trả về – cho dù số đó sẽ là cơ số 2 (hoặc nhị phân), cơ số 8 (hoặc bát phân), cơ số 10 (thập phân) hay cơ số 16 (hoặc thập lục phân) số.
Nếu cơ số không được bao gồm, thì nó là 10
(giá trị thập phân) theo mặc định.
let num = '7';
let strToNum = parseInt(num, 10);
console.log(strToNum);
console.log(typeof strToNum);
// 7
// number
Nếu chuỗi chứa chữ cái và số thì sao? Nó sẽ chỉ trả về các số từ chuỗi:
let num = '7 cats 7';
let strToNum = parseInt(num, 10);
console.log(strToNum);
console.log(typeof strToNum);
// 7
// number
Khi nào parseInt()
gặp một ký tự không phải là số, nó sẽ bỏ qua nó và tất cả các ký tự xuất hiện sau đó, ngay cả khi có nhiều số hơn ở cuối dòng.
Một điều cần lưu ý là nếu chuỗi không không phải bắt đầu bằng một số, sau đó NaN
(viết tắt của Not a Number
) sẽ được trả về thay thế.
let num = 'h7';
let strToNum = parseInt(num, 10);
console.log(strToNum);
// NaN
Các parseInt()
chức năng sẽ bắt đầu tại vị trí của chuỗi và xác định xem ký tự tại vị trí đó có thể được chuyển đổi thành số hay không. Nếu không thể, hàm trả về
NaN
thay vào đó, ngay cả khi chuỗi chứa số sau này.
Nếu bạn có một chuỗi chứa dấu phẩy thì sao? Các parseInt()
hàm sẽ làm tròn số đó và sẽ trả về một số nguyên:
let num = '7.77';
let strToNum = parseInt(num, 10);
console.log(strToNum);
// returns 7 instead of 7.77
Nếu trường hợp này xảy ra và bạn muốn thực hiện chuyển đổi theo nghĩa đen, cách tốt nhất là sử dụng parseFloat()
chức năng thay thế.
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng parseFloat()
Chức năng
Cú pháp chung cho parseFloat()
chức năng như sau:
parseFloat(string)
Cú pháp và hành vi của parseFloat()
chức năng tương tự như của parseInt()
chức năng. Sự khác biệt chính là parseFloat()
chỉ nhận một đối số và không chấp nhận cơ số làm đối số.
Các parseFloat()
hàm chấp nhận một chuỗi làm đối số duy nhất của nó và trả về một số float – một số có dấu thập phân.
Sử dụng parseFloat()
khi bạn muốn giữ lại phần thập phân chứ không chỉ phần nguyên của một số.
Lấy ví dụ tương tự từ phần trước, đây là cách bạn sẽ viết lại bằng cách sử dụng parseFloat()
:
let num = '7.77';
let strToNum = parseFloat(num);
console.log(strToNum);
// 7.77
Giống như parseInt()
các parseFloat()
hàm sẽ chỉ trả về số đầu tiên và bỏ qua mọi ký tự không phải số:
let num = '7.77 cats 7.77';
let strToNum = parseFloat(num);
console.log(strToNum);
// 7.77
Và cũng giống như parseInt()
một lần nữa, nếu ký tự đầu tiên không phải là một số hợp lệ, parseFloat()
chức năng sẽ trở lại NaN
thay vì một số vì nó không thể chuyển đổi nó thành một số:
let num = 'h7.77';
let strToNum = parseFloat(num);
console.log(strToNum);
// NaN
Cú pháp chung cho Number()
chức năng như sau:
Number(string)
Sự khác biệt giữa Number()
chức năng và parseInt()
và parseFloat()
chức năng là thực tế là Number()
chức năng cố gắng chuyển đổi toàn bộ chuỗi thành một số cùng một lúc. Các phương thức phân tích cú pháp chuyển đổi một chuỗi thành một số theo từng phần và chúng di chuyển qua các ký tự tạo nên chuỗi riêng lẻ và từng ký tự một.
Hãy lấy ví dụ sau mà bạn đã thấy trước đó được sử dụng parseInt()
:
let num = '7 cats 7';
let strToNum = parseInt(num, 10);
console.log(strToNum);
// 7
phút mà parseInt()
gặp một ký tự không phải là số, nó sẽ kết thúc quá trình chuyển đổi.
Đây là cách ví dụ tương tự hoạt động với Number()
chức năng:
let num = '7 cats 7';
let strToNum = Number(num);
console.log(strToNum);
// NaN
Từ Number()
cố gắng chuyển đổi và đánh máy toàn bộ chuỗi thành một số cùng một lúc, nó sẽ trả về NaN
vì nó gặp các ký tự không phải là số và do đó không thể chuyển đổi thành số.
Các Number()
là một lựa chọn tuyệt vời khi bạn muốn chuyển đổi không thành công nếu chuỗi chứa các ký tự không phải là số.
Một điều khác cần lưu ý là Number()
hàm không trả về số nguyên khi gặp số thập phân, trái ngược với parseInt()
chức năng bạn đã thấy trước đó.
let num = '7.77';
let strToNum = Number(num);
console.log(strToNum);
// 7.77
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Math
Chức năng
Các Math
đối tượng là một đối tượng JavaScript được tích hợp sẵn. Và bạn có thể sử dụng một số phương pháp của nó, chẳng hạn như Math.round()
,Math.floor()
và Math.ceil()
để chuyển chuỗi thành số.
Một điều cần lưu ý và ghi nhớ khi sử dụng các phương thức Toán học để chuyển đổi kiểu là khi bạn đang làm việc với số float, chúng sẽ biến chúng thành một số nguyên và số float sẽ mất phần thập phân.
Các phương thức sẽ chuyển đổi chuỗi thành số nguyên tương đương gần nhất.
Các Math.round()
hàm chuyển đổi một chuỗi thành một số và làm tròn nó thành số nguyên gần nhất:
let num = '7.5';
let strToNum = Math.round(num);
console.log(strToNum);
// 8
Nếu giá trị của num
bằng 7.4
tôi sẽ nhận được kết quả như sau:
let num = '7.4';
let strToNum = Math.round(num);
console.log(strToNum);
// 7
Nếu chuỗi chứa các ký tự không phải là số, Math.round()
lợi nhuận NaN
.
let num = '7.5a';
let strToNum = Math.round(num);
console.log(strToNum);
// NaN
Các Math.floor()
hàm chuyển đổi một chuỗi thành một số và làm tròn nó xuống đến số nguyên gần nhất:
let num = '7.87';
let strToNum = Math.floor(num);
console.log(strToNum);
// 7
Nếu chuỗi chứa các ký tự không phải là số, Math.floor()
lợi nhuận NaN
. Cách thức hoạt động của hàm này là nó cố gắng chuyển đổi toàn bộ chuỗi thành một số và sau đó đánh giá kết quả, nghĩa là chuỗi phải là một chuỗi hợp lệ để nó hoạt động:
let num = '7.87a';
let strToNum = Math.floor(num);
console.log(strToNum);
// NaN
Các Math.ceil()
chức năng ngược lại với Math.floor()
vì nó chuyển đổi một chuỗi thành một số và làm tròn nó hướng lên đến số nguyên gần nhất:
let num = '7.87';
let strToNum = Math.ceil(num);
console.log(strToNum);
// 8
Tương tự như các ví dụ trước, các Math.ceil()
chức năng sẽ trở lại NaN
khi nó gặp một giá trị không phải là số trong chuỗi:
let num = '7.87a';
let strToNum = Math.ceil(num);
console.log(strToNum);
// NaN
Cách chuyển đổi một chuỗi thành một số bằng cách nhân và chia cho 1
nhân với 1
là một trong những cách nhanh nhất để chuyển đổi một chuỗi thành một số:
let convertStringToInt = "7" * 1;
console.log(convertStringToInt);
console.log(typeof convertStringToInt);
// 7
// number
Và nếu bạn muốn thực hiện chuyển đổi kiểu trên số float, hãy nhân với 1
bảo lưu vị trí thập phân:
let convertStringToInt = "7.1" * 1;
console.log(convertStringToInt);
console.log(typeof convertStringToInt);
// 7.1
// number
Nếu chuỗi chứa các ký tự không phải là số, nó sẽ trả về NaN
:
let convertStringToInt = "7a" * 1;
console.log(convertStringToInt);
// NaN
Cách chuyển đổi chuỗi thành số nguyên này cũng hoạt động với việc chia chuỗi cho 1
:
let convertStringToInt = "7" / 1
console.log(convertStringToInt);
console.log(typeof(convertStringToInt));
// 7
// number
Tại thời điểm này, điều đáng nói là điều gì sẽ xảy ra khi bạn cố gắng thêm 1
thành một chuỗi để chuyển đổi nó thành một số nguyên. Nếu bạn cố gắng làm điều đó, đây là kết quả bạn sẽ nhận được:
let convertStringToInt = "7" + 1;
console.log(convertStringToInt);
console.log(typeof convertStringToInt);
// 71
// string
Trong ví dụ trên, 1
được nối với chuỗi "7"
nghĩa là nó được đặt cạnh chuỗi.
Cách chuyển đổi một chuỗi thành một số bằng cách sử dụng Unary +
Nhà điều hành
Sử dụng đơn nguyên +
toán tử cũng là một trong những cách nhanh nhất để chuyển đổi một chuỗi thành một số.
Bạn đặt toán tử cộng, +
trước chuỗi và nó chuyển đổi chuỗi thành một số nguyên:
let convertStringToInt = +"7";
console.log(convertStringToInt);
console.log(typeof convertStringToInt);
// 7
// number
.. hoặc một số float:
let convertStringToInt = +"7.77";
console.log(convertStringToInt);
// 7.77
Tương tự như các cách khác mà bạn đã thấy để chuyển đổi một chuỗi thành một số, toàn bộ chuỗi chỉ được chứa các ký tự số đối với số đơn nguyên. +
nhà điều hành để làm việc. Nếu chuỗi không đại diện cho một số, thì nó sẽ trả về NaN
:
let convertStringToInt = +"7a";
console.log(convertStringToInt);
// NaN
Phần kết luận
Và bạn có nó rồi đấy! Bây giờ bạn đã biết một số cách để chuyển đổi chuỗi thành số trong JavaScript.
Để tìm hiểu thêm về JavaScript, hãy xem Chứng nhận cấu trúc dữ liệu và thuật toán JavaScript của freeCodeCamp.
Đó là một chương trình giảng dạy miễn phí, được cân nhắc kỹ lưỡng và có cấu trúc, nơi bạn sẽ học một cách tương tác. Cuối cùng, bạn cũng sẽ xây dựng 5 dự án để nhận chứng chỉ và củng cố kiến thức của mình.
Cảm ơn vì đã đọc!