【发布时间】:2014-04-16 16:22:37
【问题描述】:
我知道使用localStorage.removeItem(key) 我可以按键删除一个项目。如果我的localStorage 是一维的(即localStorage.search_near = 60654),那很好。
但我有多层次的价值观。
我的localStorage.storedAddresses 包含 json 对象:
[{
"storeNumber": "010517",
"zip": "20500",
"state": "DC",
"city": "WASHINGTON",
"address": "1600 Pennsylvania Ave",
"zone": null,
"address_two": null,
"name": "Second Choice",
"type": "P",
"dwellCode": "P",
"key": 4,
"defaultLocation": "N"
},
{
"storeNumber": "714389",
"zip": "60202",
"state": "IL",
"city": "EVANSTON",
"address": "818 Brown Ave",
"zone": null,
"address_two": null,
"name": "Test Storage",
"type": "P",
"dwellCode": "P",
"key": 3,
"defaultLocation": "N"
},
{
"storeNumber": "316740",
"zip": "70810",
"state": "LA",
"city": "BATON ROUGE",
"address": "9884 BLUEBONNET BLVD",
"zone": null,
"address_two": null,
"name": "Test2",
"type": "P",
"dwellCode": "P",
"key": 2,
"defaultLocation": "N"
}]
我将如何使用 localStorage.removeItem() 仅删除 storeNumber 为 714389 的对象?我是否必须 loop through localStorage.storedAddresses 并比较 storeNumber 值,然后在找到匹配项时使用 removeItem ?还是有更直接的方法?
【问题讨论】:
-
您可能需要在这里重新考虑您的数据结构。 localStorage 只能存储字符串。是的,这允许您存储 JSON 字符串,但是如果您真的想与序列化为 JSON 的数据结构进行交互,您将需要反序列化它然后使用它。这可能是很多开销。为什么不直接为每个商店编号存储一个条目?
-
因为这些是客户保存的地址,我们需要与它们作为一个整体进行多次交互 - 即填充下拉框。获取
localStorage.storedAddresses比弄清楚我们想要哪些项目更容易。 -
好的。即便如此,您可能需要考虑将您的数据结构更改为一个对象,其中存储数字值作为与其余数据一起嵌套对象的键。如果没有这个,您将需要迭代整个对象数组以找到您正在寻找的商店。