繁体   English   中英

如何从localStorage删除对象或数组?

[英]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来搜索数组。 请参阅此以获取更多信息:

通过ID在JavaScript对象数组中查找对象

您还可以使用以下库查询JSON结构:

http://orangevolt.blogspot.com/2012/12/8-ways-to-query-json-structures.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM