Javascript 阵列中的localstorage更新属性
我正在尝试更新localstorage中的属性。我不想循环并重新设置整个过程。这可能吗Javascript 阵列中的localstorage更新属性,javascript,jquery,local-storage,Javascript,Jquery,Local Storage,我正在尝试更新localstorage中的属性。我不想循环并重新设置整个过程。这可能吗 var aR = [ { "id": 1, "width": 500 }, { "id": 2, "width": 400 } ] localStorage.setItem('test', JSON.stringify(aR)); // need to update property localStorage['test'][1]['width'] = '720'; 您可以执行与
var aR = [
{ "id": 1, "width": 500 },
{ "id": 2, "width": 400 }
]
localStorage.setItem('test', JSON.stringify(aR));
// need to update property
localStorage['test'][1]['width'] = '720';
您可以执行与stringify相反的操作,
JSON.parse()
希望这有帮助:)不,localStorage仅适用于字符串键/值。感谢您的反馈。我还不清楚。如果我更新a[1]=1000,那么我仍然需要重新制作整个“测试”,并将其全部放回存储。我可以只更新属性甚至单个对象吗?不幸的是,可以,因为正如Malk已经提到的,localStorage只将键、值对作为字符串处理。因此,如果尝试按原样保存对象,则将保存该对象的默认字符串表示形式。例如,当您执行localStorage.setItem('test',aR)
时,它将保存而不出错,但当您尝试检索它时,您将得到aR
的文本表示形式,就像这样[object object object],[object object]
,这是没有用的,因为您将无法从中识别出您的值。所以你必须将其转换成JSON字符串并再次保存:)如果我的答案对你有效,请随意投票并接受:)哎呀,第一句话错了。。我的意思是说不,你不能更新数组中任何对象的属性而不再次解析它
var arrayString = localStorage.getItem('test');
var a = JSON.parse(arrayString);
a[1]['width'] = '720';
// and do the same thing, stringify and store it back to local storage