web-dev-qa-db-fra.com

Comment vérifier si un élément de stockage est défini?

Comment puis-je vérifier si un élément est défini dans localStorage? J'utilise actuellement

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

La méthode getItem dans la spécification WebStorage renvoie explicitement null si l'élément n'existe pas:

... Si la clé donnée n'existe pas dans la liste associée à l'objet, cette méthode doit renvoyer null. ...

Afin que vous puissiez:

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

Voir cette question connexe:

441
CMS

Vous pouvez utiliser la méthode hasOwnProperty pour vérifier ceci

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

Fonctionne dans les versions actuelles de Chrome (Mac), Firefox (Mac) et Safari.

26
Stephan Hoyer

Le moyen le plus court consiste à utiliser la valeur par défaut, si la clé n'est pas en mémoire:

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

Vous pouvez aussi essayer ceci si vous voulez vérifier non défini:

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

getItem est une méthode qui renvoie la valeur null si la valeur est introuvable.

4
Prime_Coder

Vous devriez vérifier le type de l’élément dans le 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?
}
1
webmaster

Pour de vrai

localStorage.infiniteScrollEnabled = 1;

POUR FAUX

localStorage.removeItem("infiniteScrollEnabled")

VÉRIFIER L'EXISTANCE

if (localStorage[""infiniteScrollEnabled""]) {
  //CODE IF ENABLED
}
1
Derin
if(!localStorage.hash) localStorage.hash = "thinkdj";

Ou

var secret =  localStorage.hash || 42;
1
Deepak Thomas

Comment peut-on tester l'existence d'un élément dans localStorage? cette méthode fonctionne dans Internet Explorer.

<script>
    try{
        localStorage.getItem("username");
    }catch(e){
        alert("we are in catch "+e.print);
    }
</script>
1
le vantard
localStorage['root2']=null;

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

Peut-être mieux faire une analyse du plan?

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

Le meilleur et le plus sûr moyen que je puisse suggérer est ceci,

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

Cela passe par la règle no-prototype-builtins d'ESLint.

0
Gaurav Gandhi