Kuinka muuntaa merkkijono booleaniksi TypeScriptissä Angular 4:ssa
Tiedän, etten ole ensimmäinen, joka kysyy tätä, ja kuten mainitsin otsikossani, yritän muuntaa merkkijonoarvon totuusarvoksi.
Olen aiemmin laittanut joitakin arvoja paikalliseen tallennustilaan, nyt haluan saada kaikki arvot ja antaa ne kaikki joillekin boolean-muuttujille.
app.component.ts
localStorage.setItem('CheckOutPageReload', this.btnLoginNumOne + ',' + this.btnLoginEdit);
tässä this.btnLoginNumOne ja this.btnLoginEdit ovat merkkijonoarvoja ("true,false").
peili.osa.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
}
tässä komponentissa this.btnLoginNumOn ja this.btnLoginEdit ovat Boolean-arvoja;
Kokeilin ratkaisuja StackOverflowssa, mutta mikään ei toiminut.
Voiko joku auttaa minua korjaamaan tämän.
Vastaus #1
Menetelmä 1 :
var stringValue = "true";
var boolValue = (/true/i).test(stringValue) //returns true
Menetelmä 2 :
var stringValue = "true";
var boolValue = (stringValue =="true"); //returns true
Menetelmä 3 :
var stringValue = "true";
var boolValue = JSON.parse(stringValue); //returns true
Menetelmä 4 :
var stringValue = "true";
var boolValue = stringValue.toLowerCase() == 'true'; //returns true
Menetelmä 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;
}
}
lähde: http://codippa.com/how-to-convert-string-to-boolean-javascript/
Vastaus #2
Olen kokeillut eri arvoja JSON.parse(value)-koodilla, ja näyttää siltä, että se toimii:
// 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));
Vastaus #3
Sinun tilanteessasi merkkijonon muuntaminen booleaniksi voidaan tehdä esimerkiksi seuraavasti: someString === 'true' (kuten jo vastattiin).
Kuitenkin, anna minun yrittää käsitellä pääasiallista ongelmaasi: paikallisen tallennustilan hallintaa.
Paikallinen tallennus tukee vain merkkijonoja arvoina; hyvä tapa käyttää sitä olisi siis aina serialisoida tietosi merkkijonoksi ennen sen tallentamista tallennukseen ja kääntää prosessi takaisin, kun haetaan niitä.
Mahdollisesti kelvollinen formaatti tietojesi serialisointiin on JSON, koska sen käsitteleminen JavaScriptissä on hyvin helppoa.
Seuraavia toimintoja voidaan näin ollen käyttää paikallisen tallennustilan kanssa vuorovaikutukseen, edellyttäen että tietosi voidaan sarjoittaa JSON-muotoon.
function setItemInStorage(key, item) {
localStorage.setItem(key, JSON.stringify(item));
}
function getItemFromStorage(key) {
return JSON.parse(localStorage.getItem(key));
}
Esimerkki voidaan sitten kirjoittaa uudelleen seuraavasti:
setItemInStorage('CheckOutPageReload', [this.btnLoginNumOne, this.btnLoginEdit]);
Ja :
const pageLoadParams = getItemFromStorage('CheckOutPageReload');
if (pageLoadParams) {
this.btnLoginNumOne = pageLoadParams[0];
this.btnLoginEdit = pageLoadParams[1];
}
