Ich speicher viele Werte in localStorage für eine App und benötigte eine Möglichkeit, die "Zeichenfolge" zurück in eine Zahl zu konvertieren - WENN es eine Zahl war. Wenn Sie das Feld HTML <input type="number"> on your form, then the data going into the form and extracted from the form IS a number, but once stored - its converted to a string. So to repopulate that
später erzwingen, müssen Sie den localStorage-Wert lesen und ihn in eine Zahl konvertieren, bevor Sie das Eingabefeld neu füllen. Andernfalls erhalten Sie eine Menge Warnungen und manchmal Fehler, da NUMBERS erwartet werden, localStorage jedoch Strings abrufenZahlen aus localStorage als Zahlen extrahieren
Meine Methode: Angenommen, der Wert wird als Zahl eingegeben, dann wird nur eine Zahl (nur Ziffern) gespeichert - Sie können also davon ausgehen, dass nur Zahlen ausgegeben werden (auch wenn es sich um eine Zeichenfolge handelt). nur Zahlen zu wissen, ermöglicht dies kommt zurück:
var allVariables = {} ;
var reg = new RegExp(/^\d+$/) ; // this accounts for digits only
for (var x=0; x<localStorage.length;x++) {
var keyValue = localStorage.getItem(localStorage.key(x)) ;
if (reg.text(keyValue)) {
keyValue = parseInt(keyValue) ;
}
allVariables[localStorage.key(x)] = keyValue ;
}
ich auch auf diese erweitert für wahr/falsch booleans erklären ... kann 0/1 nicht einfach verwenden, ohne mit einer Reihe verwirrt. Eine andere Methode, die ich gesehen habe unterstreicht den Schlüsselnamen der typeof für eine spätere Umwandlung zu identifizieren:
dh:
key1_str
key2_boo
key3_int
key4_obj
key5_flo
Dann identifizieren die „_xxx“ angemessen, diesen Wert zu konvertieren.
Ich bitte darum, dass andere mit diesem Problem oder mit Vorschlägen und Empfehlungen zur Verbesserung konfrontiert werden. Meiner ist nicht perfekt ... obwohl weder localStorage ... noch auf der Suche nach Verbesserungen ist.
speichern Sie es als JSON – Dimava
nicht sicher, dass entweder funktionieren würde, weil die localstorage die Nummer 12345 als „12345“ gespeichert hat. Importieren oder speichern Sie es als JSON (ohne Konvertierung) würde es immer noch als: '" Key ":" 12345 "' versus: '" key ": 12345' – rolinger
@rolinger nicht wahr ... kopiere meine Antwort auf Ihre Konsole und run it – charlietfl