如何在typescript Angular 4中将字符串转换为boolean

Zhu*_*Zhu 27 typescript angular-local-storage angular

我知道不是第一个问这个问题,正如我在标题中提到的,我正在尝试转换字符串值布尔值.

我之前已经将一些值放入本地存储中,现在我想获取所有值并将所有值分配给一些布尔变量.

app.component.ts

localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
Run Code Online (Sandbox Code Playgroud)

这里this.btnLoginNumOnethis.btnLoginEdit是字符串值("真,假") .

mirror.component.ts

if (localStorage.getItem('CheckOutPageReload')) {
      let stringToSplit = localStorage.getItem('CheckOutPageReload');
      this.pageLoadParams = stringToSplit.split(',');

      this.btnLoginNumOne = this.pageLoadParams[0]; //here I got the error as boolean value is not assignable to string
      this.btnLoginEdit = this.pageLoadParams[1]; //here I got the error as boolean value is not assignable to string
}
Run Code Online (Sandbox Code Playgroud)

在这个组件中,this.btnLoginNumOne和this.btnLoginEdit是布尔值;

我尝试了stackoverflow中的解决方案,但没有任何工作.

任何人都可以帮我解决这个问题.

Ayo*_*b k 61

方法1:

var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true
Run Code Online (Sandbox Code Playgroud)

方法2:

var stringValue = "true";
var boolValue = (stringValue =="true");   //returns true
Run Code Online (Sandbox Code Playgroud)

方法3:

var stringValue = "true";
var boolValue = JSON.parse(stringValue);   //returns true
Run Code Online (Sandbox Code Playgroud)

方法4:

var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true'; //returns true
Run Code Online (Sandbox Code Playgroud)

方法5:

var stringValue = "true";
var boolValue = getBoolean(stringValue); //returns true
function getBoolean(value){
   switch(value){
        case true:
        case "true":
        case 1:
        case "1":
        case "on":
        case "yes":
            return true;
        default: 
            return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

来源:http://codippa.com/how-to-convert-string-to-boolean-javascript/

  • 考虑使用“= =” (4认同)
  • 方法5:看起来太好了。您可以为 'ON'、'YES'、'TRUE' 添加 touppercase 以确保大写测试。 (3认同)

nun*_*ins 10

在您的场景中,可以通过类似的方法将字符串转换为布尔值someString === 'true'(正如已经回答的那样)。

但是,让我尝试解决您的主要问题:处理本地存储。

本地存储仅支持字符串作为值;因此,使用它的一个好方法是在将数据存储到存储中之前始终将数据序列化为字符串,并在获取数据时反转该过程。

JSON 可能是一种不错的序列化数据格式,因为它很容易在 JavaScript 中处理。

因此,如果您的数据可以序列化为 JSON,则可以使用以下函数与本地存储交互。

function setItemInStorage(key, item) {
  localStorage.setItem(key, JSON.stringify(item));
}

function getItemFromStorage(key) {
  return JSON.parse(localStorage.getItem(key));
}
Run Code Online (Sandbox Code Playgroud)

然后您的示例可以重写为:

setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);
Run Code Online (Sandbox Code Playgroud)

和:

const pageLoadParams = getItemFromStorage('CheckOutPageReload');
if (pageLoadParams) {
  this.btnLoginNumOne = pageLoadParams[0];
  this.btnLoginEdit = pageLoadParams[1];
}
Run Code Online (Sandbox Code Playgroud)


Gon*_*alo 8

我一直在尝试不同的价值,JSON.parse(value)而且似乎可以完成工作:

// true
Boolean(JSON.parse("true"));
Boolean(JSON.parse("1"));
Boolean(JSON.parse(1));
Boolean(JSON.parse(true));

// false
Boolean(JSON.parse("0")); 
Boolean(JSON.parse(0));
Boolean(JSON.parse("false"));
Boolean(JSON.parse(false));
Run Code Online (Sandbox Code Playgroud)

  • 如果输入的JSON无效,则有可能引发异常(例如“ on”或“ yes”)。 (3认同)