Reputation: 88187
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
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
Reputation: 3515
if(!localStorage.hash) localStorage.hash = "thinkdj";
Or
var secret = localStorage.hash || 42;
Updated:
let scrollEnabled = localStorage?.scrollEnabled??true;
Upvotes: 8
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
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
Reputation: 341
Can try something like this:
let x = localStorage.getItem('infiniteScrollEnabled') === null ? "not found" : localStorage.getItem('infiniteScrollEnabled')
Upvotes: 5
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
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
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
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
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
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
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
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
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
Reputation: 1230
For TRUE
localStorage.infiniteScrollEnabled = 1;
FOR FALSE
localStorage.removeItem("infiniteScrollEnabled")
CHECK EXISTANCE
if (localStorage[""infiniteScrollEnabled""]) {
//CODE IF ENABLED
}
Upvotes: 3
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
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