349

アイテムが設定されているかどうかを確認するにはどうすればよいlocalStorageですか?現在使用しています

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

16 に答える 16

616

getItemWebStorage仕様のメソッドはnull、アイテムが存在しない場合に明示的に返します。

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

だからあなたはできる:

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

この関連する質問を参照してください:

于 2010-07-16T07:06:26.953 に答える
64

hasOwnPropertyメソッドを使用してこれを確認できます

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

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

于 2017-01-04T11:16:02.437 に答える
22

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

var sValue = localStorage['my.token'] || ''; /* for strings */
var iValue = localStorage['my.token'] || 0; /* for integers */
于 2014-02-20T12:59:43.690 に答える
6
if(!localStorage.hash) localStorage.hash = "thinkdj";

または

var secret =  localStorage.hash || 42;
于 2016-08-10T20:49:09.690 に答える
4

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

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

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

于 2016-02-29T12:10:03.543 に答える
4

ここに追加していることを確認する方法がいくつかあります

方法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";
 }
于 2021-03-31T08:19:38.177 に答える
3

このようなことを試すことができます:

 let x = localStorage.getItem('infiniteScrollEnabled') === null ? "not found" : localStorage.getItem('infiniteScrollEnabled')
于 2021-07-24T03:54:27.833 に答える
2

TRUEの場合

localStorage.infiniteScrollEnabled = 1;

FALSEの場合

localStorage.removeItem("infiniteScrollEnabled")

存在を確認する

if (localStorage[""infiniteScrollEnabled""]) {
  //CODE IF ENABLED
}
于 2014-08-22T04:33:47.657 に答える
2

でアイテムの存在をテストするにはどうすればよいlocalStorageですか?この方法は、InternetExplorerで機能します。

<script>
    try{
        localStorage.getItem("username");
    }catch(e){
        alert("we are in catch "+e.print);
    }
</script>
于 2015-10-08T17:19:31.203 に答える
1

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?
}
于 2017-09-24T15:21:12.577 に答える
1

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

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

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

于 2019-08-06T06:45:54.107 に答える
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
}
于 2020-04-07T07:09:19.947 に答える
1

私はこのパーティーに遅れていますが、localStorageのキーの存在(またはキー値の存在)のチェックは、私が作成した便利なユーティリティラッパーであるlocalDataStorageを使用して簡単に実行できます。

次のようなものでラッパーをインスタンス化した後

myLDS = localDataStorage( 'segmentedStorageHere' );

キーを設定できます

myLDS.set( 'infiniteScrollEnabled', true );

簡単な方法で。この例は実際にはブール値をストアに渡していることに注意してください。ストアでは、次のコマンドで取得できます。

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
于 2021-04-01T03:08:14.717 に答える
0
localStorage['root2']=null;

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

たぶん、計画のスキャンを行う方が良いですか?

localStorage['root1']=187;
187
'root1' in localStorage
true
于 2014-06-26T07:35:44.513 に答える
0

@ChristianC.Salvadóが上で述べたように、あなたはすることができます if (xxx === null){}

しかし、nullは次のように偽の値でもあります。

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

「hello」は出力されません。

于 2022-02-13T18:30:26.360 に答える
-3

このコードを試してください

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

} else {

}
于 2020-04-27T00:59:09.880 に答える