JavaScript >> Javascript 文檔 >  >> Tags >> string

在 JavaScript 中將字符串轉換為布爾值

簡介

假設我們將布爾值存儲在我們的數據庫中作為字符串 並基於這些值,我們希望在我們的網站/應用程序上執行一些特定的操作。在這種情況下,我們必須將這些字符串轉換為布爾值,然後才能在邏輯運算中使用它們。

使用身份運算符(===)

身份運算符 ,也稱為嚴格相等運算符 , 返回 true 僅當且僅當被比較的兩個值是相同類型且具有相同值 .換句話說,它判斷左邊的值是否等於右邊的值——並返回true 如果是,則 false 如果不是。

注意: 如果你想詳細了解==之間的區別 (嚴格相等運算符)=== (鬆散相等運算符) ,你應該閱讀我們的“JavaScript:==vs ===Operator”

本質上,我們會將我們的字符串與字符串 "true" 進行比較 .因此輸出將是一個布爾值 true 僅當我們的字符串實際上是 "true" .任何其他字符串都會導致代碼返回 false 布爾值:

let myString = "true"; 
let boolOutput = (myString === "true"); //returns true

注意: 我們用引號寫一個字符串值 - "true" , 和不帶引號的布爾值 - true .我們將在整篇文章中使用這種表示法。

另外,我們可以先將字符串轉換為小寫,以確保字母大小寫不會導致任何錯誤輸出:

let myString = "True"; 
let boolOutput = (myString.toLowerCase() === "true"); // returns true

正如我們之前所說,前面的代碼將返回 false 如果我們的字符串值不等於 "true"

let myString1 = "Test";
let boolOutput1 = (myString1 === "true"); //returns false

let myString1 = "Test";
let boolOutput1 = (myString1.toLowerCase() === "true"); //returns false

let myString = "True";
let boolOutput2 = (myString2 === "true"); //returns false

我們還可以通過引入 三元運算符 來增加一些趣味 等式運算符 .我們要做的就是檢查我們的字符串是否等於 "true" 然後返回 true 的布爾值 如果有匹配或 false 如果沒有:

let myString = "true";
let boolOutput = myString.toLowerCase() == 'true' ? true : false; // returns true

使用正則表達式 (RegEx)

正則表達式 (RegEx) 是匹配和測試字符串字符組合的模式。

注意: 在本文中,我們假設您至少對一般的正則表達式有基本的了解。但是,如果您需要幫助來掌握 JavaScript 中的正則表達式,您應該考慮閱讀我們的“JavaScript 中的正則表達式和匹配字符串指南”

出於本文的目的,我們將使用 JavaScript 中最基本的正則表達式形式 - 我們將創建匹配 "true" 的簡單正則表達式 並使用 test() 將其與我們的字符串匹配 方法:

let stringValue = "true"; 
let boolValue = (/true/).test(stringValue); //returns true

您會注意到這實際上是區分大小寫的,因為這將返回 false 如果有輕微的大小寫不一致:

let stringValue = "True"; 
let boolValue = (/true/).test(stringValue); //returns false

為了解決這個問題,我們可以添加 /i 在正則表達式的末尾以確保 不區分大小寫的匹配

let stringValue = "True"; 
let boolValue = (/true/i).test(stringValue); //returns true

使用布爾包裝類?

JavaScript 有一個內置的 Boolean 用於存儲布爾值的對象。它實際上是一個對象包裝器 對於布爾值 - 它環繞 其他對象,從而使它們成為有效的布爾值。這是通過測試 truthy-falsy 來完成的 一個對象的價值。通常 - 空對像被評估為 false , 非空對像被評估為 true .

任何不是空字符串的字符串都將評估為 true 通過使用 Boolean 包裝:

let myString1 = Boolean('true'); //returns true
let myString2 = Boolean(''); // //returns false
let myString3 = Boolean('false'); //returns true
let myString4 = Boolean('True'); //returns true

兩個主要問題 這裡:

  • 首先是這會返回true 對於至少有一個空白字符(空格、製表符等)的空字符串,這就是為什麼我們在使用這種方法時要小心:
const myString5 = Boolean(' '); //returns true

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

  • 其次,轉換"false"的字符串 false 的布爾值 將失敗,因為任何非空字符串都會轉換為 true .

雙非運算符 - !!

使用雙非運算符等於使用邏輯非運算符(! ) 兩次,這意味著它反轉了單個 NOT 運算符的結果:

let myString1 = !'test'; // returns false
let myString2 = !''; // returns true

當我們使用雙非運算符時,值會被翻轉,這意味著我們現在正在執行純布爾轉換:

let myString1 = !!'test'; // returns true
let myString2 = !!''; // returns false

雙非(!! ) 運算符非常簡潔,但與 Boolean 的作用相同 包裝。但是,如果您不熟悉邏輯非 (! ) 運算符。

使用此方法時我們也必須小心,因為帶有至少一個空白字符的空字符串仍會返回 true 當我們嘗試轉換 "false" 的字符串時 false 的布爾值 ,這仍然不起作用(就像 Boolean 對象)。

結論

在本文中,我們研究了四種在 JavaScript 中將字符串轉換為布爾值的方法。最簡單的方法是使用 嚴格相等運算符 將我們的字符串值與 "true" 進行比較 - 如果字符串(嚴格)等於 "true" ,輸出將是布爾值 true .或者,您可以使用 三元運算符鬆散相等運算符旁邊 達到同樣的效果。此外,正則表達式匹配是一種可靠的方法。

最後兩個方法,Boolean 對象和雙非運算符 ,具有更簡單的語法,但它們的缺點是它們處理 false 的方式 value - 字符串 "false" 將返回布爾值 true ,這使得它們僅適用於一小部分轉換情況。


Tutorial JavaScript 教程
  1. 在 Vue Js 中循環

  2. 如何使用 TailwindCSS 設置 NextJS 🌊

  3. Mongoose 會自動投射類型嗎?

  4. js 新手——理解 async await 語法

  5. 求球體體積的 JavaScript 程序

  6. FoalTS 框架 - 版本 2.8 已發布,提供完整的 Websocket 支持🎉

  7. 更改字符串中的多個單詞(JS)

  1. scrollIntoView 滾動得太遠

  2. 如何編輯綁定到多邊形對象的彈出窗口

  3. 小心 Javascript 中的日期

  4. Vue.js 初學者課程 - 第 2 課

  5. 如何僅在需要時運行 jQuery 函數?

  6. 理解設計模式:使用 Long Night (GOT) 示例的裝飾器!

  7. 將用戶配置文件添加到靜態 Web 應用程序

  1. JavaScript 是如何工作的? 90% 的 JavaScript 開發人員不知道的事情! (第1部分)

  2. DIY預加載以更快地獲取數據

  3. 如何在不重新部署、重新啟動或停止執行的情況下按需將日誌添加到正在運行的應用程序

  4. 為什麼選擇無服務器?