如何在打字稿中将字符串转换为布尔值 Angular 4
How to convert string to boolean in typescript Angular 4
我知道我不是第一个问这个问题的人,正如我在标题中提到的,我正在尝试将字符串值转换为布尔值。
我之前已经把一些值存入了本地存储,现在我想获取所有的值并赋值给一些布尔变量。
app.component.ts
localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
这里的this.btnLoginNumOne
和this.btnLoginEdit
是字符串值("true,false").
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.btnLoginNumOn
e 和 this.btnLoginEdi
t 是 布尔值;
我尝试了 Whosebug 中的解决方案,但没有任何效果。
谁能帮我解决这个问题。
方法一:
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'
之类的方式将字符串转换为布尔值(已经回答过)。
但是,让我尝试解决您的主要问题:处理本地存储。
本地存储只支持字符串作为值;因此,使用它的一个好方法是始终将数据序列化为字符串,然后再将其存储在存储器中,并在获取数据时反转该过程。
用于序列化数据的一种可能不错的格式是 JSON,因为它在 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;
此函数会将您的字符串转换为布尔值
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';
}
只需使用<> 运算符:
const Text1 = ""
const Text2 = "there is a text"
console.log(!!Text1) // false
console.log(!!Text2) // true
我知道我不是第一个问这个问题的人,正如我在标题中提到的,我正在尝试将字符串值转换为布尔值。
我之前已经把一些值存入了本地存储,现在我想获取所有的值并赋值给一些布尔变量。
app.component.ts
localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
这里的this.btnLoginNumOne
和this.btnLoginEdit
是字符串值("true,false").
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.btnLoginNumOn
e 和 this.btnLoginEdi
t 是 布尔值;
我尝试了 Whosebug 中的解决方案,但没有任何效果。
谁能帮我解决这个问题。
方法一:
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'
之类的方式将字符串转换为布尔值(已经回答过)。
但是,让我尝试解决您的主要问题:处理本地存储。
本地存储只支持字符串作为值;因此,使用它的一个好方法是始终将数据序列化为字符串,然后再将其存储在存储器中,并在获取数据时反转该过程。
用于序列化数据的一种可能不错的格式是 JSON,因为它在 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;
此函数会将您的字符串转换为布尔值
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';
}
只需使用<> 运算符:
const Text1 = ""
const Text2 = "there is a text"
console.log(!!Text1) // false
console.log(!!Text2) // true