[英]How do I delete an object or array from localStorage?
我知道使用localStorage.removeItem(key)
可以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的对象? 我是否必须遍历 localStorage.storedAddresses
并比较storeNumber值,然后在找到匹配项时使用removeItem
? 还是有更直接的方法?
由于localstorage只能存储字符串,因此您必须使用JSON.parse解析值并手动将其删除,然后重新插入。
var storedAddresses = JSON.parse(localStorage.storedAddresses);
// storedAddresses is now an array of objects, not just a string
for ( var i = 0; i < storedAddresses.length; i++ ) {
if ( storedAddresses[i].storeNumber === '714389' ) {
// remove the object with storeNumber '714389' from the array
storedAddresses.splice(i,1);
}
}
// insert the new stringified array into LocalStorage
localStorage.storedAddresses = JSON.stringify(storedAddresses);
如果使用的是jQuery,则可能要使用grep来搜索数组。 请参阅此以获取更多信息:
您还可以使用以下库查询JSON结构:
http://orangevolt.blogspot.com/2012/12/8-ways-to-query-json-structures.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.