Bạn có thể muốn so sánh hai chuỗi để biết chuỗi nào cao hơn hoặc thấp hơn theo thứ tự bảng chữ cái hoặc để xem chúng có bằng nhau không.
Bạn có thể làm điều này theo nhiều cách. Tôi sẽ cho bạn thấy hai trong số họ trong bài viết này.
1. Cách so sánh các chuỗi bằng localeCompare
Bạn có thể dùng localeCompare
phương pháp để so sánh hai chuỗi trong miền địa phương hiện tại. Đây là cú pháp:
string1.localeCompare(string2)
locaelCompare
trả lại:
- 1 nếu
string1
lớn hơn (cao hơn theo thứ tự bảng chữ cái) so vớistring2
- -1 nếu
string1
nhỏ hơn (thấp hơn theo thứ tự bảng chữ cái) so vớistring2
- 0 nếu
string1
vàstring2
bằng nhau theo thứ tự bảng chữ cái
Dưới đây là một số ví dụ so sánh hai chuỗi:
const string1 = "hello"
const string2 = "world"
const compareValue = string1.localeCompare(string2)
// -1
nó cho -1
bởi vì, trong ngôn ngữ tiếng Anh, h trong lời chào đến trước w trên thế giới (w thấp hơn theo thứ tự bảng chữ cái so với h)
Một vi dụ khac:
const string1 = "banana"
const string2 = "back"
const compareValue = string1.localeCompare(string2)
// 1
So sánh trên cho 1
bởi vì, trong tiếng Anh, baN trong chuối đến sau bac ở phía sau.
Một ví dụ nữa:
const string1 = "fcc"
const string2 = "fcc"
const string3 = "Fcc"
const compareValue1 = string1.localeCompare(string2)
// 0
const compareValue2 = string1.localeCompare(string3)
// -1
So sánh “fcc” và “fcc” mang lại vì chúng có thứ tự bằng nhau. “fcc” và “Fcc” mang lại
-1
bởi vì chữ “F” viết hoa lớn hơn chữ “f” nhỏ.
Trong một số trình duyệt, thay vì -1nó có thể trở lại -2 hoặc một số giá trị âm khác. Vì vậy, không phụ thuộc vào -1 hoặc 1thay vào đó là các giá trị âm (nhỏ hơn 0) hoặc dương (lớn hơn 0)
2. Cách so sánh các chuỗi bằng toán tử toán học
Bạn cũng có thể sử dụng các toán tử toán học như lớn hơn (>), ít hơn (<) và bằng khi so sánh các chuỗi.
Các toán tử toán học hoạt động tương tự như localeCompare
– bằng cách trả về kết quả dựa trên thứ tự của các ký tự trong chuỗi.
Sử dụng các ví dụ trước:
const string1 = "hello"
const string2 = "world"
console.log(string1 > string2)
// false
string1
không lớn hơn string2
bởi vì h đến trước wvì vậy nó nhỏ hơn
Đối với ví dụ khác:
const string1 = "banana"
const string2 = "back"
console.log(string1 > string2)
// true
string1
lớn hơn string2
bởi vì baN đến sau back.
Và ví dụ cuối cùng:
const string1 = "fcc"
const string2 = "fcc"
const string3 = "Fcc"
console.log(string1 === string2)
// true
console.log(string1 < string3)
// false
string1
bằng (===
) string2
nhưng string1
không nhỏ hơn string3
trái ngược với localeCompare
.
Với toán tử toán học, “fcc” lớn hơn “Fcc”, nhưng với localeCompare
, "fcc".localeCompare("Fcc")"
lợi nhuận -1
để chỉ ra rằng “fcc” nhỏ hơn “Fcc”.
Hành vi này là một lý do tại sao tôi không khuyên bạn nên sử dụng các toán tử toán học để so sánh các chuỗi, mặc dù nó có khả năng làm như vậy.
Một lý do khác khiến tôi không khuyên bạn nên sử dụng các toán tử toán học là vì "fcc" > "fcc"
và "fcc" < "fcc"
Là false
. “fcc” bằng “fcc”. Vì vậy, nếu bạn phụ thuộc vào toán tử toán học, nhận false
có thể vì những lý do khác với bạn tin.
Vì vậy, để so sánh các chuỗi, trong số nhiều cách có thể có, sử dụng localCompare
là một cách tiếp cận hiệu quả vì nó có thể được sử dụng cho các ngôn ngữ khác nhau.
Bây giờ bạn đã biết một cách dễ dàng để so sánh các chuỗi. Chúc mừng mã hóa!