首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修改本地存储?

修改本地存储?
EN

Stack Overflow用户
提问于 2012-09-13 18:06:45
回答 2查看 22.8K关注 0票数 7

我用简单的图片来给一家网上商店供电。它将数据存储在本地存储中,如下所示:

代码语言:javascript
运行
复制
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Mattamusta -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":19,"name":"Mohawk .vaimennusmatto 48 x 39cm"},"SCI-5":{"quantity":2,"id":"SCI-5","price":8,"name":"Car Speaker -hajuste","color":"Green Tea"},"SCI-7":{"quantity":1,"id":"SCI-7","price":50,"name":"Asennuspaketti"},"SCI-9":{"quantity":1,"id":"SCI-9","price":30,"name":"Quartz-kalvot","color":"Yellow","size":"50cm x 30cm"},"SCI-11":{"quantity":1,"id":"SCI-11","price":30,"name":"Quartz-kalvot","color":"True Blue","size":"50cm x 30cm"}}

我想在关闭之前添加这一行

代码语言:javascript
运行
复制
"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}

然而,产品的数量将取决于用户,如、SCI-12等必须随着项目数量的增加而增长。

编辑实际上,它不需要使用SCI-1,它可以是任何东西,只要它是在项目之后。

EDIT2这里是我在尝试的..。但没有运气。

代码语言:javascript
运行
复制
$("#matkahuolto").click(function(){
    var value_object = '"Toimituskulut":{"quantity":1,"id":"Toimituskulut","price":5,"name":"Toimituskulut"}';
    var json_object = JSON.parse(localStorage.your_json); // convert string to object

    json_object["simpleCart_items"] = value_object; // add value

    localStorage.your_json = JSON.stringify(json_object);  // store it again.

    });

    $("#posti").click(function(){
    var json_object = JSON.parse(localStorage.your_json); // convert string to object

    json_object["simpleCart_items"] = value_object; // add value

    localStorage.your_json = JSON.stringify(json_object);  // store it again.

    });

EDIT3本地存储的屏幕截图。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-13 20:33:07

您需要了解的第一件事是如何将项存储在localStorage中,这基本上就像hashmap/字典一样,因为条目存储在键值对中。

例如,要存储string localStorage,您可以执行以下操作

代码语言:javascript
运行
复制
localStorage["myKey"] = "some value";

要检索值,只需向相反的方向

代码语言:javascript
运行
复制
var myValue = localStorage["myKey"];

接下来要认识到的是,实际上只能在localStorage中存储字符串,所以如果要存储对象,首先需要将其转换为字符串表示形式。这通常是通过将对象转换为JSON实现的,这是一种用于将对象表示为字符串的紧凑表示法。要将对象转换为JSON,只需使用JSON.stringify方法,并使用JSON.parse方法解析项

例如,将一个对象转换为JSON

代码语言:javascript
运行
复制
var someObject = {id: 1, name: 'Test'};

var jsonSomeObject = JSON.stringify(someObject); 
// jsonSomeObject looks like "{"id":1,"name":"test"}"

从JSON读取对象

代码语言:javascript
运行
复制
someObject = JSON.parse(jsonSomeObject);

因此,现在假设您的对象包含适当的数据,只需使用一些键将对象stringify并添加到localStorage中,

代码语言:javascript
运行
复制
var jsonData = JSON.stringify({"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}});

localStorage["aKey"] = jsonData;

当您想稍后访问这些数据时(大概是在回到页面之后)

代码语言:javascript
运行
复制
var mySCI = JSON.parse(localStorage["aKey"])

如果您试图更新localStorage中的特定条目,那么您只需读取它,然后重写它,例如

代码语言:javascript
运行
复制
var mySCI = JSON.parse(localStorage["aKey"]);
mySCI.SCI-12.quantity = 2;
localStorage["aKey"] = JSON.stringify(mySCI);

请记住,虽然大多数浏览器都构建了对JSON的支持,但一些旧浏览器不支持JSON,如果这是一个问题,您可以包括Douglass JSON js脚本来提供支持。

编辑:

根据您刚才发布的屏幕截图,您可以看到,在localStorage中存储值的键实际上是simpleCart_items (而不是代码中使用的your_json ),并且存储的对象有一个存储在键“SCI-1”下的对象(或者其他对象存储在“SCI‘s”下)。

代码语言:javascript
运行
复制
 $("#matkahuolto").click(function(){
    var value_object = {quantity: 1, id: 1, name: "someName"} ; 
    var jsonObject = JSON.parse(localStorage["simpleCart_items"]);
    json_object["SCI_1"] = value_object; // add value

 localStorage["simpleCart_items"] = JSON.stringify(json_object);  // store it again.

});

$("#posti").click(function(){
 // convert string to object
 var json_object = JSON.parse(localStorage["simpleCart_items"]); 

json_object["SCI-1"] = value_object; // add value

 localStorage["simpleCart_items"] = JSON.stringify(json_object);  // store it again.

});
票数 12
EN

Stack Overflow用户

发布于 2012-09-13 18:17:53

LocalStorage将所有数据存储为文本字符串。因此,在将其转换为文本字符串之前,最容易对其进行修改。

否则,您需要将json字符串拉到对象中,添加属性,将其转换回字符串并存储它。

示例代码

代码语言:javascript
运行
复制
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object[key] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object);  // store it again.

Note

这就是indexedDB的目的。

人们可能会认为这是一种替代。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12412217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档