如何转换字符串布尔在打字机角度4

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

I have previously put some values into local storage,Now I want to get all the values and assign all to the some boolean variables .

app.component.ts

localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);

here this.btnLoginNumOne and this.btnLoginEdit are string values (“真,假”).

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
}

在这个分量中,this.btnLoginNumOne 和 this.btnLoginEdit 是 布尔型值;

我尝试了堆栈溢出的解决方案,但没有工作。

有人能帮我解决这个问题吗。

213852 次浏览

方法一:

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

方法二:

var stringValue = "true";
var boolValue = (stringValue =="true");   //returns true

方法三:

var stringValue = "true";
var boolValue = JSON.parse(stringValue);   //returns true

方法四:

var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true'; //returns true

方法五:

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;
}
}

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

布尔值(“ true”)也会起作用

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

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

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

A possibly decent format for serialising your data in is JSON, since it is very easy to deal with in JavaScript.

因此,可以使用以下函数与本地存储进行交互,前提是您的数据可以序列化为 JSON。

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


function getItemFromStorage(key) {
return JSON.parse(localStorage.getItem(key));
}

你的例子可以改写为:

setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);

还有:

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

我一直在尝试使用 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));

定义扩展名: String + Extension.ts

interface String {
toBoolean(): boolean
}


String.prototype.toBoolean = function (): boolean {
switch (this) {
case 'true':
case '1':
case 'on':
case 'yes':
return true
default:
return false
}
}

然后导入任何你想要使用它的文件“@/path/to/String + Extension”

你可以利用这一点:

let s: string = "true";
let b: boolean = Boolean(s);

如果你知道它在字符串中是一个有效的布尔值,你也可以尝试使用 bang bang 操作符。例如:。

let trueAsString = 'true';

let convertedStringToBool = !!trueAsString;

This function will convert your string to boolean

export const stringToBoolean = (str: string | null | undefined) => {
if (!str) {
return false
}
if (typeof str === "string") {
return !["0", "false", "no", "n", "null", "undefined", "nil"].includes(str.toLowerCase().trim())
}
return Boolean(str)
}

我认为这是最准确的:

function parseBoolean(value?: string | number | boolean | null) {
value = value?.toString().toLowerCase();
return value === 'true' || value === '1';
}

just use << !! >> operator:

const Text1 = ""
const Text2 = "there is a text"


console.log(!!Text1) // false
console.log(!!Text2) // true