web-dev-qa-db-fra.com

Comment mettre à jour la valeur json dans localstorage

J'ai donc un tableau stringify'ed et enregistré dans mon localStorage sous la clé "personnes".

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));

Lorsque j'ai besoin de mettre à jour l'âge de la personne portant le nom x (disons que l'entrée est la personne portant le nom b), mon approche consiste à obtenir et à analyser ma clé localStorage:

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

Ensuite, je crée une boucle for pour parcourir les objets et trouver un objet avec le nom b:

for (var i = 0; i < persons.length; i++) {
   if(inputName === persons[i].name){
       persons[i].age += 2
       localStorage.setItem("persons", JSON.stringify(aCustomers[i].age));
   }
}

Cela ne semble pas fonctionner. J'ai trouvé ma correspondance dans la boucle, mais je ne sais pas comment ajouter 2 ans à l'âge et mettre à jour cette valeur dans mon localStorage.persons sans écraser et détruire les objets json.

12
Mac Luc

Vous devez redéfinir l'objet comme vous l'avez fait à l'origine, en ce moment, vous ne stockez qu'un numéro, pas l'objet.

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
25
epascarello