web-dev-qa-db-ja.com

localstorageのjson値を更新する方法

そのため、配列を文字列化し、「persons」キーの下の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));
   }
}

これは機能していないようです。ループで一致が見つかりましたが、jsonオブジェクトを上書きして破棄せずに、年齢に2年を追加してlocalStorage.personsのその値を更新する方法がわかりません。

12
Mac Luc

最初に行ったようにオブジェクトを再度設定する必要があります。現在、オブジェクトではなく数値のみを保存しています。

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