web-dev-qa-db-fra.com

Est-il possible de stocker la valeur entière dans localStorage comme dans les objets Javascript et de l'extraire sans transtypage?

Lorsque j'attribue une valeur entière à l'élément localStorage

localStorage.setItem('a',1)

et vérifier son type

typeof(localStorage.a)
"string"

il retourne chaîne, je peux le transtyper en int pour mon usage

parseInt(localStorage.a)

Ma question est-il possible de stocker une valeur entière dans localStorage comme je peux le faire pour les objets Javascript sans transtypage?

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

Ma question est-il possible de stocker une valeur entière dans localStorage comme je peux le faire pour les objets Javascript sans transtypage?

Non.

Les objets de stockage sont de simples magasins de valeurs-clés, similaires aux objets, mais ils restent intacts pendant le chargement des pages. Les clés peuvent être des chaînes ou des entiers, mais les valeurs sont toujours des chaînes . [source]

15
Adam Zerner

En fait, vous pouvez, si nous convenons que l'analyse n'est pas la même chose que le transtypage:

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

Fiddle puisque les stacksnippets sur-protégés n'autorisent pas localStorage.

Par souci de simplicité, vous devez de toute façon toujours stringifier en JSON ce que vous enregistrez dans localStorage, de cette façon vous n'avez pas à penser à ce que vous enregistrez/récupérez, et vous éviterez "[object Object]" en cours de sauvegarde.

9
Kaiido