【问题标题】:Javascript: Retrieve all keys from sessionStorage?Javascript:从 sessionStorage 中检索所有密钥?
【发布时间】:2017-06-09 03:26:58
【问题描述】:
是否无法检索我存储在 sessionStorage(或 localStorage)中的所有键/对象?
如果我已经完成了sessionStorage.name = 'John' 和sessionStorage.city = 'New York',是否有办法获得显示键name 和city 的列表?
【问题讨论】:
标签:
javascript
session
local-storage
session-storage
【解决方案1】:
获取显示键 name 和 city
的列表
使用Object.keys()函数:
sessionStorage.name = 'John';
sessionStorage.city = 'New York';
console.log(Object.keys(sessionStorage));
【解决方案2】:
您可以使用Object.keys() 和reduce():
var obj = Object.keys(localStorage).reduce(function(obj, key) {
obj[key] = localStorage.getItem(key);
return obj
}, {});
console.log(obj)
【解决方案3】:
如果您不需要支持 IE9 或更低版本(或者乐于使用 Polyfills,则可以使用 Object.keys() 和 Array. prototype.map() 的组合,如下所示:
Object.keys(localStorage).map(function(c,i,a){
// do whatever
});
Object.keys() 返回传递给它的对象的可枚举值的数组,另外还有一个好处是不枚举其原型链中的任何属性。
然后您可以使用Array.prototype.map() 对这个返回的数组运行操作。
【解决方案4】:
通过这个你可以将本地存储中的所有数据分配到一个对象中:
let storage = {}
Object.keys(localStorage).forEach((key) => {
storage[key] = localStorage.getItem(key);
});
【解决方案5】:
您可以这样获取键及其值。
for (const [key, value] of Object.entries(sessionStorage)) {
console.log({key, value});
};
这应该在 IE11 之外工作