web-dev-qa-db-ja.com

Javascriptオブジェクトのように整数値をlocalStorageに格納し、型キャストせずにそれを抽出することは可能ですか?

LocalStorageアイテムに整数値を割り当てると

localStorage.setItem('a',1)

そのタイプを確認してください

typeof(localStorage.a)
"string"

stringを返します。使用するためにintに型キャストできます

parseInt(localStorage.a)

私の質問は、型キャストせずにJavascriptオブジェクトに対して実行できるように、整数値をlocalStorage内に格納することは可能ですか?

a={};
a.number=1;
typeof(a.number)
"number"
16
nickalchemist

私の質問は、型キャストせずにJavascriptオブジェクトに対して実行できるように、整数値をlocalStorage内に格納することは可能ですか?

番号。

ストレージオブジェクトは、オブジェクトに似た単純なKey-Valueストアですが、ページの読み込み中はそのまま残ります。キーは文字列または整数にすることができますが、値は常に文字列です。 [ソース]

15
Adam Zerner

実際に、構文解析が型キャストと同じではないことに同意すれば、できます。

let val = 42;
localStorage.answer = JSON.stringify(val);
let saved = JSON.parse(localStorage.answer);
console.log( saved === val ); // true

フィドル 過剰に保護されたスタックスニペットはlocalStorageを許可しないため。

簡単にするために、とにかく常にlocalStorageに保存しているものをJSONに文字列化する必要があります。これにより、保存/取得しているものについて考える必要がなくなり、"[object Object]"が保存されないようになります。

9
Kaiido