如何更新localstorage中的json值

时间:2014-02-20 23:57:06

标签: javascript json loops local-storage

所以我有一个数组stringify'并保存在我的localStorage下的'person'键下。

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 个答案:

答案 0 :(得分:25)

您需要像原先一样重新设置对象,此时您只需要编号,而不是对象。

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