Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阵列中的localstorage更新属性_Javascript_Jquery_Local Storage - Fatal编程技术网

Javascript 阵列中的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'; 您可以执行与

我正在尝试更新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';

您可以执行与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