Khi bạn đang thao tác dữ liệu, nhận giá trị từ biểu mẫu và xử lý dữ liệu theo cách khác, các giá trị này có thể lấy kiểu dữ liệu không chính xác.
Giả sử bạn muốn giá trị của mình là boolean với một trong hai true
hoặc false
, nhưng nó được lưu trữ dưới dạng một chuỗi – “true” hoặc “false”. Nó trở nên khó sử dụng cho mục đích dự định của bạn, vì vậy trước tiên bạn phải chuyển đổi các giá trị chuỗi boolean này thành các giá trị boolean thực tế.
Trong bài viết này, bạn sẽ tìm hiểu cách chuyển đổi một chuỗi thành giá trị boolean bằng các phương thức khác nhau trong JavaScript. Trong trường hợp bạn đang vội, đây là cách bạn có thể làm:
// Using identity operator
console.log((boolString === "true")); // true / false
// Using Regex
console.log((/true/).test(boolString)); // true
Nếu bạn không vội, hãy tìm hiểu từng phương pháp và hơn thế nữa.
Cách phân tích chuỗi thành Boolean bằng Toán tử nhận dạng (===
)
Toán tử nghiêm ngặt là tên gọi khác của toán tử nhận dạng. Nó sẽ chỉ trở lại true
nếu hai giá trị được so sánh là như nhau. Điều này ngụ ý rằng trường hợp thư của họ – và mọi thứ khác – cũng phải giống nhau. Nếu không, nó sẽ trở lại false
.
Trong trường hợp này, bạn muốn chuyển đổi một chuỗi thành boolean, nghĩa là bạn sẽ so sánh nó với chuỗi “true”. Nếu cả hai giá trị giống nhau, nó sẽ trả về giá trị boolean true
ngược lại, nó sẽ trả về giá trị boolean false
.
let boolString = "true";
let boolValue = (boolString === "true");
console.log(boolValue); // true
Đây là một toán tử đẳng thức nghiêm ngặt và sẽ nghiêm ngặt với so sánh trường hợp chữ cái:
let boolString = "True";
let boolValue = (boolString === "true");
console.log(boolValue); // false
Bạn có thể khắc phục điều này bằng cách sử dụng toLowerCase()
Vì vậy, trước tiên, phương thức này chuyển đổi giá trị chuỗi thành kiểu chữ cái phù hợp với phép so sánh của bạn rồi so sánh.
let boolString = "True";
let boolValue = (boolString.toLowerCase() === "true");
console.log(boolValue); // true
Một phương thức khác rất giống với toán tử nhận dạng là phương thức regex, trong đó bạn có thể kiểm tra xem hai giá trị có khớp nhau không.
Cách phân tích chuỗi thành Boolean bằng Regex
Regex là viết tắt của Biểu thức chính quy. Đây là một chủ đề lập trình rộng lớn và bạn có thể sử dụng biểu thức chính quy làm mẫu để so khớp và kiểm tra các kết hợp ký tự chuỗi.
Hướng dẫn rất đơn giản về regex sẽ cho bạn biết rằng biểu thức được đặt giữa hai dấu gạch chéo (/
). Ví dụ: nếu bạn muốn kiểm tra giá trị chuỗi thực, bạn sẽ làm như sau:
let boolString = "true";
let boolValue = (/true/).test(boolString);
console.log(boolValue); // true
Điều này cũng phân biệt chữ hoa chữ thường:
let boolString = "True";
let boolValue = (/true/).test(boolString);
console.log(boolValue); // false
Bạn sẽ phải thêm i
gắn cờ ở cuối biểu thức chính quy để cho phép khớp không phân biệt chữ hoa chữ thường.
let boolString = "True";
let boolValue = (/true/i).test(boolString);
console.log(boolValue); // true
Cách phân tích chuỗi thành Boolean bằng toán tử KHÔNG kép (*!!*
)
Bạn cũng nên biết cách sử dụng toán tử NOT duy nhất mà bạn có thể sử dụng để đảo ngược kết quả.
Khi bạn thêm một toán tử NOT trước một chuỗi, nó sẽ trả về true
hoặc false
. Nếu đó là một chuỗi rỗng, nó sẽ trả về true
nếu không thì, false
:
let stringValue1 = !'true';
let stringValue2 = !'';
console.log(stringValue1); // false
console.log(stringValue2); // true
Đây không phải điều bạn muốn. Thay vào đó, bạn muốn chuyển đổi một chuỗi thành boolean, nghĩa là khi chuỗi trống, nó sẽ trả về false
và trong mọi trường hợp khác, nó sẽ trả về true
.
Đây là lúc bạn có thể sử dụng toán tử logic NOT kép. Bạn sử dụng nó để đảo ngược kết quả của toán tử NOT duy nhất:
let stringValue1 = !!'true';
let stringValue2 = !!'';
console.log(stringValue1); // true
console.log(stringValue2); // false
Bạn sử dụng phương pháp này để chuyển đổi bất kỳ giá trị chuỗi nào đến một boolean. Khi nó trống, nó trở lại false
. Nếu không thì nó trả về true
.
Một nhược điểm của phương pháp này là bạn không thể chuyển đổi một chuỗi "false"
đến một giá trị boolean của false
. Nó sẽ chỉ trở lại false
khi nó là một chuỗi rỗng.
Cách phân tích chuỗi thành Boolean bằng Trình bao bọc Boolean
Đối tượng Boolean trong JavaScript đại diện cho một giá trị boolean. Phương thức này hoạt động giống như toán tử NOT kép.
// Syntax
Boolean()
Khi bạn chuyển một giá trị chuỗi vào đối tượng Boolean, nó sẽ ước tính thành true
nhưng khi bạn chuyển một chuỗi rỗng, nó sẽ đánh giá thành false
.
let stringValue1 = Boolean('true');
let stringValue2 = Boolean('');
console.log(stringValue1); // true
console.log(stringValue2); // false
Hạn chế duy nhất với phương pháp này là nếu bạn thêm khoảng cách giữa dấu ngoặc kép để biểu thị chuỗi, nó sẽ trả về true
– có nghĩa là nó coi nó như một chuỗi.
let stringValue = Boolean(' ');
console.log(stringValue); // true
Ghi chú: Khi bạn chuyển đổi một chuỗi "false"
bạn muốn nó trả về giá trị boolean là false
. Nhưng điều này sẽ trở lại true
bởi vì nó chỉ trả về false
khi nó là một chuỗi rỗng.
kết thúc
Trong bài viết này, bạn đã học cách chuyển đổi một giá trị chuỗi thành boolean. Cách tiếp cận tốt nhất bao gồm tất cả các tình huống là toán tử đẳng thức đồng nhất, trong khi đối tượng Boolean và logic kép KHÔNG có cú pháp tốt hơn.
Hãy mã hóa vui vẻ!