Localstorage & JSON:我怎样才能只删除一个键内的 1 个数组,因为 localstorage.removeItem 需要整个键

Posted

技术标签:

【中文标题】Localstorage & JSON:我怎样才能只删除一个键内的 1 个数组,因为 localstorage.removeItem 需要整个键【英文标题】:Localstorage & JSON: How can I delete only 1 array inside a key since localstorage.removeItem requires the entire key 【发布时间】:2011-12-28 22:48:10 【问题描述】:

我的 localStorage 中有这个:

["id":"item-1","href":"google.com","icon":"google.com",
"id":"item-2","href":"youtube.com","icon":"youtube.com",
"id":"item-3","href":"google.com","icon":"google.com",
"id":"item-4","href":"google.com","icon":"google.com",
"id":"item-5","href":"youtube.com","icon":"youtube.com",
"id":"item-6","href":"asos.com","icon":"asos.com",
"id":"item-7","href":"google.com","icon":"google.com",
"id":"item-8","href":"mcdonalds.com","icon":"mcdonalds.com"]

localstorage.removeItem 需要整个密钥时,如何仅删除id:item-3

我使用此方法更新数组中的特定值:http://jsfiddle.net/Qmm9g/ 所以使用相同的方法我想删除特定数组。

请注意,已经有一个按钮可以删除。那个按钮我想要一个函数,用ID:item-3删除整个数组("id":"item-3","href":"google.com","icon":"google.com"

【问题讨论】:

【参考方案1】:

这样的事情会起作用,但我不确定这是否是最好的方法。可能有更好的本地存储特定方式 -

var json = JSON.parse(localStorage["results"]);
for (i=0;i<json.length;i++)
            if (json[i].id == 'item-3') json.splice(i,1);
localStorage["results"] = JSON.stringify(json);

【讨论】:

谢谢!我在寻找什么【参考方案2】:

您可以使用 jQuery 的 $.each() 函数和 javascript 的 splice 方法来删​​除整个对象,如下所示:

$.each(json, function(index, obj)
    if (obj.id == 'item-3') 
        json.splice(index,1);
        console.log(json);
        localStorage["results"] = JSON.stringify(json);
        return false;
    
);

更新小提琴:http://jsfiddle.net/Qmm9g/3/

我希望这会有所帮助!

【讨论】:

感谢您的回答。虽然你的答案和ipr101一样,但我接受了他,因为他回答得更快【参考方案3】:

这是我从 localStorage 中删除对象的代码。

 
"admin": 
    "pass": "1234",
    "task": [
        "id": "1", "taskName": "assignedTask", "taskDesc": "jhdjshdh",
        "id": "2", "taskName": "assignedTask", "taskDesc": "jhdjshdh",
        "id": "3", "taskName": "assignedTask", "taskDesc": "jhdjshdh",
        "id": "4", "taskName": "assignedTask", "taskDesc": "jhdjshdh"
    ]
 


    function filterData() 
        var data = JSON.parse(localStorage.task);
        //console.log(data);
        var newData = data.filter(function(val)
            return (val.YourPropertyName !== key.value && val.YourPropertyName !== val.value );
        );
        localStorage.task = JSON.stringify(newData);
    

【讨论】:

以上是关于Localstorage & JSON:我怎样才能只删除一个键内的 1 个数组,因为 localstorage.removeItem 需要整个键的主要内容,如果未能解决你的问题,请参考以下文章

来自localstorage的JSON无法在php中解码

将对象添加到 localStorage。 JSON

如何使用 localStorage 修复 Vuex 中的 JSON 解析错误

解决vuex数据刷新丢失

解决vuex数据刷新丢失

解决vuex数据刷新丢失