如何查看存储项是否设置?

我如何检查一个项目是否设置在localStorage?目前我正在使用

if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}
485428 次浏览

WebStorage规范中的getItem方法在项目不存在时显式返回null:

... 如果给定的键在与该对象关联的列表中不存在,则该方法必须返回null. ...

所以,你可以:

if (localStorage.getItem("infiniteScrollEnabled") === null) {
//...
}

请看这个相关问题:

最短的方法是使用默认值,如果key不在存储中:

var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */
localStorage['root2']=null;


localStorage.getItem("root2") === null //false

也许最好先看一遍计划?

localStorage['root1']=187;
187
'root1' in localStorage
true

为真正的

localStorage.infiniteScrollEnabled = 1;

因为假

localStorage.removeItem("infiniteScrollEnabled")

检查存在

if (localStorage[""infiniteScrollEnabled""]) {
//CODE IF ENABLED
}

如何测试localStorage中一个项的存在性? 此方法适用于ie浏览器

<script>
try{
localStorage.getItem("username");
}catch(e){
alert("we are in catch "+e.print);
}
</script>

如果你想检查undefined,你也可以试试这个:

if (localStorage.user === undefined) {
localStorage.user = "username";
}

getItem是一个方法,如果没有找到value则返回null。

if(!localStorage.hash) localStorage.hash = "thinkdj";

var secret =  localStorage.hash || 42;

你可以使用hasOwnProperty方法来检查这一点

> localStorage.setItem('foo', 123)
undefined
> localStorage.hasOwnProperty('foo')
true
> localStorage.hasOwnProperty('bar')
false

适用于当前版本的Chrome(Mac), Firefox(Mac)和Safari。

你应该在localStorage中检查项目的类型

if(localStorage.token !== null) {
// this will only work if the token is set in the localStorage
}


if(typeof localStorage.token !== 'undefined') {
// do something with token
}


if(typeof localStorage.token === 'undefined') {
// token doesn't exist in the localStorage, maybe set it?
}

我能建议的最好最安全的方法就是,

if(Object.prototype.hasOwnProperty.call(localStorage, 'infiniteScrollEnabled')){
// init variable/set default variable for item
localStorage.setItem("infiniteScrollEnabled", true);
}

这将通过ESLint的no-prototype-builtins规则传递。

我在我的项目中使用过,对我来说非常适合

var returnObjName= JSON.parse(localStorage.getItem('ObjName'));
if(returnObjName && Object.keys(returnObjName).length > 0){
//Exist data in local storage
}else{
//Non Exist data block
}

试试这段代码

if (localStorage.getItem("infiniteScrollEnabled") === null) {


} else {


}

我在这里添加了一些方法来检查

方法1

if("infiniteScrollEnabled" in localStorage){
console.log("Item exists in localstorage");
}else{
console.log("Item does not exist in localstoarge";
}

方法2

if(localStorage.getItem("infiniteScrollEnabled") === null){
console.log("Item does not exist in localstoarge";
}else{
console.log("Item exists in localstorage");
}

方法3

if(typeof localStorage["cart"] === "undefined"){
console.log("Item does not exist in localstoarge";
}else{
console.log("Item exists in localstorage");
}

方法4

if(localStorage.hasOwnProperty("infiniteScrollEnabled")){
console.log("Item exists in localstorage");
}else{
console.log("Item does not exist in localstoarge";
}

我来晚了,但是检查localStorage是否存在键(或键值)很容易用< >强localDataStorage < / >强来完成,这是我创建的一个方便的实用程序包装器。

在用类似

myLDS = localDataStorage( 'segmentedStorageHere' );

你可以设置按键

myLDS.set( 'infiniteScrollEnabled', true );

以直截了当的方式。注意,这个例子实际上是将布尔值传递给存储,在存储中可以使用

let scrollingState = myLDS.get( 'infiniteScrollEnabled' );

scrollingState将包含返回的布尔值。包装为您跟踪本机JavaScript数据类型,无缝(数组,布尔,日期,数字,对象等)没有更多的JSON字符串/解析在您的代码。

现在,当我们需要知道一个钥匙是否在存储中,我们可以像这样检查它

if( myLDS.haskey( 'infiniteScrollEnabled' ) ) {
console.log( "It's been set!" );
} else {
console.log( "The key is not set." );
}

您还可以检查是否存在特定的值。例如

myLDS.set( 'myNumber', 1234.5678 );
console.log( myLDS.hasval( 1234.5678 ) );    --> true

可以尝试这样做:

 let x = localStorage.getItem('infiniteScrollEnabled') === null ? "not found" : localStorage.getItem('infiniteScrollEnabled')

正如@Christian C. Salvadó上面提到的,你可以做到 if (xxx === null){} < / p >

但是null也是一个假值,就像这样:

if (null){
console.log ("hello");
}

不打印“hello”。

我总是通过检查它们的长度来检查是否设置了localStoragesessionStorage

if (sessionStorage.length > 0) {
console.log("exists")
} else {
console.log("not exists")
}