web-dev-qa-db-ja.com

Storage項目が設定されているかどうかを確認するにはどうすればいいですか?

localStorageに項目が設定されているかどうかをどうやって確認できますか?現在使用しています

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

WebStorage仕様の getItem メソッドは、項目が存在しない場合は明示的に null を返します。

...指定されたキーがオブジェクトに関連付けられたリストに存在しない場合、このメソッドはnullを返さなければなりません。 ...

だからあなたはできる:

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

この関連質問を参照してください。

424
CMS

これをチェックするためにhasOwnPropertyメソッドを使うことができます

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

現在のバージョンのChrome(Mac)、Firefox(Mac)、およびSafariで動作します。

25
Stephan Hoyer

最短の方法は、keyがストレージにない場合、デフォルト値を使うことです:

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

未定義をチェックしたい場合はこれを試すこともできます。

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

getItemは、値が見つからない場合にnullを返すメソッドです。

4
Prime_Coder

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
webmaster

TRUEの場合

localStorage.infiniteScrollEnabled = 1;

偽りの

localStorage.removeItem("infiniteScrollEnabled")

存在を確認

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

または

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

どのようにしてlocalStorage内の項目の存在をテストできますか?この方法は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

計画をスキャンしたほうがいいでしょうか。

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

私が提案できる最も安全な方法はこれです、

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

これはESLintの no-prototype-builtins ルールを通過します。

0
Gaurav Gandhi