2017-05-14 1 views
2

Ich muss eine Menge Daten im lokalen Speicher für meine App speichern. Ich bin erfolgreich darin, das zu speichern. Jetzt muss ich Daten in einem Array, aber von den ausgewählten Schlüssel/Werten und nicht alle oder nur 1 von ihnen abrufen. Ich habe diesen Schlüssel als "section" + id benannt, wie unten zu sehen, müssen diese in einem Array auswählen. enter image description hereWelche Abfrage kann ich verwenden, um Daten aus dem lokalen Speicher des ausgewählten Schlüsselwerts zu holen

+0

localStorage.getItem (Schlüssel); – Shiladitya

Antwort

2

localStorage.getItem(key) werden die Daten für die Return-Taste Sie. Daten von localStorage werden serialisiert, so dass Sie sie mit JSON.parse(data) in ein einfaches JS-Objekt analysieren müssen, und dann können Sie damit wie jedes andere Objekt arbeiten.

Sie können nur ein einzelnes Element mit localStorage.getItem erhalten. Wenn Sie also mehrere Elemente in einem Array haben möchten, müssen Sie diese einzeln schleifen und einzeln in ein Array einfügen. so etwas wie diese
Vielleicht:

var keys = Object.keys(localStorage).filter(function(key) { 
    return /^section\d+$/.test(key); 
}); 

var dataArray = keys.map(function(key) { 
    return JSON.parse(localStorage.getItem(key)); 
}); 

Zuerst bekommen wir alle „Abschnitt ###“ Schlüssel mit der filter Funktion. Dann erstellen wir ein neues Array mit den Daten für jedes entsprechende Element unter Verwendung der map-Funktion.

+0

Ich muss Tasten dynamisch auswählen, was Sie oben erklären, aber ich bin nicht in der Lage, diesen Code zu verstehen '/^Abschnitt \ d + $ /. Test (key);', in der Konsole sagt es 10 wahr, 2 falsch. Kannst du mir bitte erklären, wie man diese in jedem Array bekommt, damit ich sie weiter benutzen kann – user2828442

+0

@ user2828442 Es stimmt mit allen Schlüsseln überein, die aus "section" gefolgt von Zahlen bestehen, also passt es "section321", "section323" und so auf, aber es stimmt nicht mit Schlüsseln wie "sectionTypes" oder "templateType" überein. Es hat es von deinem Screenshot genommen, dass das Muster das du willst. Diese Überprüfung wird als Bedingung für die 'Filter'-Funktion verwendet, so dass das' keys' -array nur Ihre "section ###" -Tasten enthält, die beim Abrufen und Parsen der Daten für all diese Elemente verwendet werden. –

+0

Danke, das ist, was ich gesucht habe, funktioniert wie ein Charme – user2828442

0

Versuchen Sie diesen Code. Ich habe es bearbeitet.

var keys = []; 
var data = []; 

for (var key in localStorage) { 
    if (key.indexOf("section") > -1) 
    keys.push(key); 
} 

for (var i in keys) { 
    data.push(localStorage.getItem(keys[i])) 
} 
+0

aber ich weiß nicht die Schlüsselnamen, ich muss Schlüssel wählen, die Abschnitt + einige sind nein. in einer Schleife, können Sie jetzt Ihre Lösung entsprechend aktualisieren – user2828442

+0

wollen Sie auch alle ihre Daten im Array –

+0

@ AbhinavS.Chauhan Holen Ich würde die Daten.Push innerhalb der ersten for-Schleife setzen, wegen der Tatsache, dass JavaScript isn 't synchron, so könnte die letzte for-Schleife halbwegs von der ersten ausgeführt werden. –

Verwandte Themen