var tab = { 'michal':{klasa:6,opis:{wzrost:189,waga:86}}, 'magda':{klasa:6,opis:{wzrost:190,waga:86}}, 'maciek':{klasa:6,opis:{wzrost:189,waga:86}}, 'marcin':{klasa:6,opis:{wzrost:189,waga:86}} }; var data = JSON.parse(localStorage.getItem(id)); localStorage.setItem(id,JSON.stringify(data)); };
jeżeli chciałbym wymienić całą gałąź 'michal':
var name = 'michal'; var newdata = {klasa:5,opis:{wzrost:100,waga:100}}; update(tab,name,newdata);
i to działa w 100%
problem pojawia się gdy chce wymienić tylko dalszą gałąź:
czyli tylko dane opisu 'michal.opis':
var name = 'michal'; var newdata = {wzrost:100,waga:100}; update(tab,name.opis,newdata);
zamiast zmodyfikować michal.opis tworzy mi nowa gałąź ->"undefined":{wzrost:100,waga:100}.
Jeżeli zrobię tak:(prześle key jako STRING):
var name = 'michal'; var newdata = {wzrost:100,waga:100}; update(tab,'name.opis',newdata);
tworzy mi nowa gałąź: ->"name.opis":{wzrost:100,waga:100}.
Coś jest nie tak z przesłaniem zmiennej 'key', nie wiem jak to poprawić. Problem tkwi w mojej niewiedzy na temat drzew JSON, nie potrafię go rozwiązać.
Jak zmodyfikować funkcje update żeby móc zmieniać dalsze gałęzie ?
-----------------------------------------------------------------------------------------------------
Dla potomnych.
Rozwiązałem swój problem. Funkcja dalej jest niedoskonała, ale pozwala modyfikować o 1 gałąź dalej.
Jedynym rozwiązaniem jest dodanie pętli for() z -> key.length żeby sprawdzić ile index'ów jeszcze mamy. Czego nie chce robić

if(localStorage.getItem(id)){ var data = JSON.parse(localStorage.getItem(id)); localStorage.setItem(id,JSON.stringify(data)); } }