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 需要整个键的主要内容,如果未能解决你的问题,请参考以下文章