형식 문자 Angular 4에서 문자열을 부울로 변환하는 방법
이 질문을 한 것이 처음이 아니라는 것을 알고 있으며, 제 제목에서 언급했듯이, 저는 문자열 값을 부울로 변환하려고 합니다.
이전에 몇 가지 값을 로컬 스토리지에 저장했습니다.이제 모든 값을 가져와 모든 값을 일부 부울 변수에 할당합니다.
app.component.ts
localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
여기서this.btnLoginNumOne
그리고.this.btnLoginEdit
문자열 값("true, false")입니다.
미러.컴포넌트.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는 부울값입니다.
스택 오버플로우에서 솔루션을 시도했지만 아무 것도 작동하지 않습니다.
누가 고쳐줄 사람 없어요?
방법 1:
var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true
방법 2:.
var stringValue = "true";
var boolValue = (stringValue =="true"); //returns true
방법 3:
var stringValue = "true";
var boolValue = JSON.parse(stringValue); //returns true
방법 4:
var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true'; //returns true
방법 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;
}
}
출처 : http://codippa.com/how-to-convert-string-to-boolean-javascript/
다른 가치관을 시도하고 있습니다.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));
시나리오에서는 문자열을 부울로 변환할 수 있습니다.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];
}
확장 정의: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+'을 사용할 파일을 Import합니다.확장'
이 함수는 문자열을 부울로 변환합니다.
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
bang 연산자가 문자열에 유효한 부울 값을 알고 있는 경우 bang 연산자를 사용해 볼 수도 있습니다.예를 들어,
let trueAsString = 'true';
let convertedStringToBool = !!trueAsString;
사용할 수 있습니다.
let s: string = "true";
let b: boolean = Boolean(s);
Boolean("true")도 작업을 수행할 수 있습니다.
언급URL : https://stackoverflow.com/questions/52017809/how-to-convert-string-to-boolean-in-typescript-angular-4
'programing' 카테고리의 다른 글
웹 팩 번들의 크기를 최소화하는 방법 (0) | 2023.03.22 |
---|---|
react-dom을 사용한 jajest 단위 테스트에서 act()를 사용하는 경우 (0) | 2023.03.22 |
Apache 2.4에서 mod_rewrite를 활성화하는 방법 (0) | 2023.03.22 |
Wordpress에서 하나의 Contact Form 7 폼에서 다른 폼으로 값을 전달하려면 어떻게 해야 합니까? (0) | 2023.03.22 |
WooCommerce에서 PHP를 사용하여 ID로 제품 삭제 (0) | 2023.03.22 |