كيفية تحويل سلسلة إلى قيمة منطقية في تايبسكريبت أنجولار 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 و this.btnLoginEdit قيم منطقية;
لقد جربت الحلول في StackOverflow لكن لم ينجح أي شيء.
هل يمكن لأي شخص مساعدتي في إصلاح هذا.
الإجابة رقم 1
الطريقة 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/
الإجابة رقم 2
لقد كنت أحاول قيمًا مختلفة باستخدام 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));
الإجابة رقم 3
في سيناريوك، يمكن تحويل سلسلة إلى قيمة منطقية عن طريق شيء مثل someString === 'true' (كما تم الإجابة عليه بالفعل).
ومع ذلك، دعني أحاول معالجة مشكلتك الرئيسية: التعامل مع التخزين المحلي.
التخزين المحلي يدعم فقط السلاسل كنصوص القيم؛ وبالتالي فإن طريقة جيدة لاستخدامه هي دائمًا تحويل بياناتك إلى سلسلة قبل تخزينها في التخزين، وعكس العملية عند جلبها.
صيغة قد تكون مناسبة لتسلسل بياناتك فيها هي JSON، لأنها سهلة جدًا في التعامل معها في جافا سكريبت.
يمكن استخدام الوظائف التالية للتعامل مع التخزين المحلي، بشرط أن تكون بياناتك قابلة للتسلسل إلى 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];
}
