Как обновить значение json в localstorage

Итак, у меня есть массив stringify'ed и сохранен в моем localStorage под ключом "люди".

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

Когда мне нужно обновить возраст для человека с именем x (скажем, ввод - это человек с именем b), мой подход состоит в том, чтобы получить и проанализировать мой ключ localStorage:

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

Затем я создаю цикл for для циклического прохождения объектов и поиска объекта с именем 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));
   }
}

Это не работает. Я нашел совпадение в цикле, но я не знаю, как добавить 2 года к возрасту и обновить это значение в моем localStorage.persons без перезаписывания и уничтожения объектов json.

Ответ 1

Вам нужно вернуть объект обратно, как вы это делали изначально, сейчас вы храните только число, а не объект.

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