将本地存储字符串转换为bool

时间:2020-04-18 18:58:19

标签: javascript

我正在浏览器中使用本地存储来设置布尔属性。

由于本地存储使用字符串,因此我必须将其转换为bool,因为库函数需要使用true / false bool而不是字符串。

以下是我能做到的最好的方法。它有效,但看起来很笨重。

var t = localStorage.getItem("showTitle")
if (t=="false") { _showTitle = false}
if (t=="true") { _showTitle = true }

我还需要根据选择的按钮来切换此属性,因此,如果可能的话,可以采用一种更简洁的方式来处理此属性。

4 个答案:

答案 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语言中,truefalse通常表示为10,因此您可以将“ 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);

相关问题