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

问题描述 投票:0回答:18

如何检查

localStorage
中是否设置了某个项目?目前我正在使用

if (!(localStorage.getItem("infiniteScrollEnabled") == true || localStorage.getItem("infiniteScrollEnabled") == false)) {
    // init variable/set default variable for item
    localStorage.setItem("infiniteScrollEnabled", true);
}
javascript html local-storage
18个回答
683
投票

WebStorage 规范中的

getItem
方法,如果该项目不存在,则显式返回
null

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

所以,你可以:

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

请参阅此相关问题:


78
投票

您可以使用

hasOwnProperty
方法来检查这个

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

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


24
投票

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

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

8
投票

有几种方法可以检查我是否将它们添加到此处

方法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";
 }

8
投票
if(!localStorage.hash) localStorage.hash = "thinkdj";

或者

var secret =  localStorage.hash || 42;

更新:

let scrollEnabled = localStorage?.scrollEnabled??true;

5
投票

可以尝试这样的事情:

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

4
投票

如果您想检查未定义,也可以尝试此操作:

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

getItem 是一个如果未找到值则返回 null 的方法。


3
投票

为了真实

localStorage.infiniteScrollEnabled = 1;

对于错误

localStorage.removeItem("infiniteScrollEnabled")

检查是否存在

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

3
投票

如何测试

localStorage
中某项是否存在? 此方法适用于 Internet Explorer。

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

2
投票

我建议的最好和最安全的方法是这个,

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

这通过了 ESLint 的

no-prototype-builtins
规则。


1
投票

您应该检查 localStorage 中项目的 type

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?
}

1
投票

我已经在我的项目中使用过并且非常适合我

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

1
投票

我参加这个聚会迟到了,但是使用我创建的一个方便的实用程序包装器localDataStorage可以轻松检查localStorage是否存在键(或是否存在键值)。

用类似的东西实例化包装器之后

myLDS = localDataStorage( 'segmentedStorageHere' );

可以设置按键

myLDS.set( 'infiniteScrollEnabled', true );

以简单的方式。请注意,这个示例实际上是将一个 boolean 值传递给存储,可以使用

检索它
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

1
投票

正如 @Christian C. Salvadó 上面提到的,你可以这样做

if (xxx === null){}

但是 null 也是一个假值,如下所示:

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

不打印“hello”。


0
投票
localStorage['root2']=null;

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

也许扫描一下计划更好?

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

0
投票

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

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



0
投票

代码

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

不适合我。也许是因为自从提供这个答案以来事情已经发生了变化。今天,2023 年,以下命令对我有用:

if (!localStorage.getItem("infiniteScrollEnabled")) {

请注意,这实际上是 MDN 网络文档中推荐的方法:https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#testing_whether_your_storage_has_been_populated


-3
投票

试试这个代码

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

} else {

}
© www.soinside.com 2019 - 2024. All rights reserved.