2014-02-20 17 views
9

So habe ich ein Array in meinem localStorage unter 'Personen' stringifiziert und gespeichert.So aktualisieren Sie den Json-Wert im lokalen Speicher

arr = [{"name":"a", "age": 1, "sport":"football"}, 
{"name":"b", "age": 2, "sport":"volley"}, 
{"name":"c", "age": 3, "sport":"basket"}]; 
localStorage.setItem('persons', JSON.stringify(arr)); 

Als ich Alter für Personen mit dem Namen x aktualisieren müssen (können sagen, dass die Eingabe Person mit dem Namen b), mein Ansatz ist mein local Schlüssel zu erhalten und zu analysieren:

var persons = JSON.parse(localStorage.persons); 

ich dann Machen Sie eine for-Schleife, um die Objekte durchzulaufen und ein Objekt mit dem Namen b zu finden:

Dies scheint nicht zu funktionieren. Ich habe meine Übereinstimmung in der Schleife gefunden, aber ich weiß nicht, wie man dem Alter 2 Jahre hinzufügt und diesen Wert in meinem localStorage.persons aktualisiert, ohne die json-Objekte zu überschreiben und zu zerstören.

+0

Sie stringieren 'aCustomers'. Ist es das was du willst? –

+0

das ist ein Fehler! sollten Personen sein! –

+0

Wird das behoben oder gibt es ein anderes Problem? –

Antwort

20

Sie müssen das Objekt wieder wie ursprünglich eingestellt zurücksetzen, im Moment werden nur eine Zahl und nicht das Objekt gesucht.

var persons = JSON.parse(localStorage.persons); 
for (var i = 0; i < persons.length; i++) { 
    if(inputName === persons[i].name){ //look for match with name 
     persons[i].age += 2; //add two 
     break; //exit loop since you found the person 
    } 
} 
localStorage.setItem("persons", JSON.stringify(persons)); //put the object back 
+0

Natürlich! DOH! so nah :) vielen Dank champ. –

+0

epascarello die einzige Sache ist, dass es eine 2 nach der Alterszahl hinzufügt, anstatt sie zusammen zu addieren. Ich übergebe die 2 als Variable - hast du irgendwelche Ideen? –

+0

'Personen [i] .age = parseInt (Personen [i] .age, 10) + 2;' – epascarello

Verwandte Themen