我正在浏览器中使用本地存储来设置布尔属性。
由于本地存储使用字符串,因此我必须将其转换为bool,因为库函数需要使用true / false bool而不是字符串。
以下是我能做到的最好的方法。它有效,但看起来很笨重。
var t = localStorage.getItem("showTitle")
if (t=="false") { _showTitle = false}
if (t=="true") { _showTitle = true }
我还需要根据选择的按钮来切换此属性,因此,如果可能的话,可以采用一种更简洁的方式来处理此属性。
答案 0 :(得分:1)
好吧,IMO将成为函数的最简洁方法。
function getBooleanFromLocalStorage(key) {
return localStorage.getItem("showTitle") === "true"
}
您可以在此处放置所需的任何逻辑,默认值等,甚至还可以输入原始逻辑,以防万一,因为即使看起来很笨拙,它的工作也会影响整个应用程序的可读性
答案 1 :(得分:1)
设置值时将使用JSON.stringify
,而在检索时将使用JSON.parse
:
localStorage.setItem('showTitle', JSON.stringify(_showTitle))
_showTitle = JSON.parse(localStorage.getItem('showTitle'))
通常,这是用于在存储对象中存储非字符串值的选择方法。
如果要存储很多非字符串值,则可以将其概括化:
const setStorageItem = (key, value) => {
localStorage.setItem(key, JSON.stringify(value))
}
const getStorageItem = (key) => {
return JSON.parse(localStorage.getItem(key))
}
然后,您可以像这样使用它,例如:
setStorageItem('showTitle', _showTitle)
_showTitle = getStorageItem('showTitle')
此方法适用于对象,数字,布尔值,null等。
答案 2 :(得分:1)
在Java语言中,true
和false
通常表示为1
和0
,因此您可以将“ 1”存储为true,将“ 0”存储为false,然后做到这一点:
var t = localStorage.getItem("showTitle")
_showTitle = !!parseInt(t)
答案 3 :(得分:0)
您可以将一个空字符串用于false,将一个非空字符串用于true:
var t = ""
var _showTitle;
if (t) {
_showTitle = false;
} else {
_showTitle = true;
}
console.log(_showTitle);
或者您也可以使用“ 0”和“ 1”,然后使用parseInt()
转换为整数,因为0为false,1为true:
var t = "0"
var _showTitle;
if (parseInt(t)) { // if it's a number and evaluates to anything but 0
_showTitle = false;
} else {
_showTitle = true;
}
console.log(_showTitle);
或者您也可以使用如下布尔字符串:
var t = "false"
var _showTitle;
if (t === "true") {
_showTitle = false;
} else {
_showTitle = true;
}
console.log(_showTitle);