Jiew Meng
Jiew Meng

Reputation: 88187

How to check whether a Storage item is set?

How can I check if an item is set in localStorage? Currently I am using

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

Upvotes: 403

Views: 563203

Answers (17)

Dominique Bauer
Dominique Bauer

Reputation: 31

The code

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

is not working for me. Perhaps it's because things have changed since this answer was provided. Today, in 2023, the following command works for me:

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

Note that this is actually the method recommended in the MDN web docs at https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#testing_whether_your_storage_has_been_populated.

Upvotes: 1

Deepak Thomas
Deepak Thomas

Reputation: 3515

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

Or

var secret =  localStorage.hash || 42;

Updated:

let scrollEnabled = localStorage?.scrollEnabled??true;

Upvotes: 8

Mohamed Eldefrawy
Mohamed Eldefrawy

Reputation: 74

I always check if localStorage or sessionStorage is set by checking the length of them

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


Upvotes: 0

heyyy
heyyy

Reputation: 83

As @Christian C. Salvadó has mentioned above you can do if (xxx === null){}

but null is also a falsy value, like so:

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

which does not print "hello".

Upvotes: 1

Ayush Choudhary
Ayush Choudhary

Reputation: 341

Can try something like this:

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

Upvotes: 5

Mac
Mac

Reputation: 1566

I'm late to this party, but checking localStorage for the existence of keys (or the existence of key values) is easily done with localDataStorage, a handy utility wrapper I created.

After instantiating the wrapper with something like

myLDS = localDataStorage( 'segmentedStorageHere' );

you can set keys

myLDS.set( 'infiniteScrollEnabled', true );

in a straightforward manner. Note that this example is actually passing a boolean value to the store, where it can be retrieved with

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

and scrollingState will contain the boolean value returned. The wrapper keeps track of the native JavaScript data type for you, seamlessly (Array, Boolean, Date, Number, Object, etc.) No more JSON stringifying/parsing in your code.

Now when we need to know if a key is in the store, we can check it like this

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

You can also check whether a particular value is present. For example

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

Upvotes: 1

Vikas Kandari
Vikas Kandari

Reputation: 1852

there are couple of methods to check i am adding them here

Method 1

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

Method 2

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

Method 3

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

Method 4

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

Upvotes: 8

Rahul Vanave
Rahul Vanave

Reputation: 13

I've used in my project and works perfectly for me

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

Upvotes: 1

Gaurav Gandhi
Gaurav Gandhi

Reputation: 3201

Best and Safest way i can suggest is this,

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

This passes through ESLint's no-prototype-builtins rule.

Upvotes: 2

le vantard
le vantard

Reputation: 73

How can one test existence of an item in localStorage? this method works in internet explorer.

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

Upvotes: 3

webmaster
webmaster

Reputation: 2020

You should check for the type of the item in the 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?
}

Upvotes: 1

Christian C. Salvad&#243;
Christian C. Salvad&#243;

Reputation: 827208

The getItem method in the WebStorage specification, explicitly returns null if the item does not exist:

... If the given key does not exist in the list associated with the object then this method must return null. ...

So, you can:

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

See this related question:

Upvotes: 698

Stephan Hoyer
Stephan Hoyer

Reputation: 4928

You can use hasOwnProperty method to check this

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

Works in current versions of Chrome(Mac), Firefox(Mac) and Safari.

Upvotes: 78

Prime_Coder
Prime_Coder

Reputation: 161

You can also try this if you want to check for undefined:

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

getItem is a method which returns null if value is not found.

Upvotes: 4

Derin
Derin

Reputation: 1230

For TRUE

localStorage.infiniteScrollEnabled = 1;

FOR FALSE

localStorage.removeItem("infiniteScrollEnabled")

CHECK EXISTANCE

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

Upvotes: 3

zloctb
zloctb

Reputation: 11177

localStorage['root2']=null;

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

Maybe better to do a scan of the plan ?

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

Upvotes: 0

Vladislav
Vladislav

Reputation: 1995

The shortest way is to use default value, if key is not in storage:

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

Upvotes: 23

Related Questions