そのため、配列を文字列化し、「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
のその値を更新する方法がわかりません。
最初に行ったようにオブジェクトを再度設定する必要があります。現在、オブジェクトではなく数値のみを保存しています。
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