我只是想知道如何获得localStorage
中的所有关键值。
我试图用一个简单的JavaScript循环检索值
for (var i=1; i <= localStorage.length; i++) {
alert(localStorage.getItem(i))
}
但它只有当键是渐进数时才起作用,从1开始。
如何显示所有可用数据?
在ES2017中你可以使用:
Object.entries(localStorage)
我们也可以通过名字阅读。
假设我们已经使用名称'user'保存了这个值
$localStorage.user = user_Detail;
然后我们可以通过使用来阅读它
localStorage["ngStorage-user"];
我使用它,它工作顺利,不需要做for循环
对于那些提到使用Object.keys(localStorage)
的人...不要因为它在Firefox中不起作用(具有讽刺意味的是因为Firefox忠实于规范)。考虑一下:
localStorage.setItem("key", "value1")
localStorage.setItem("key2", "value2")
localStorage.setItem("getItem", "value3")
localStorage.setItem("setItem", "value4")
因为key,getItem和setItem是原型方法,所以Object.keys(localStorage)
只返回["key2"]
。
你最好做这样的事情:
let t = [];
for (let i = 0; i < localStorage.length; i++) {
t.push(localStorage.key(i));
}
for (var key in localStorage){
console.log(key)
}
编辑:这个答案得到了很多赞成,所以我想这是一个常见的问题。我觉得我应该对任何可能偶然发现我的答案并认为它是“正确的”的人感谢它,因为它被接受进行更新。事实是,上面的例子并不是真正做到这一点的正确方法。最好和最安全的方法是这样做:
for ( var i = 0, len = localStorage.length; i < len; ++i ) {
console.log( localStorage.getItem( localStorage.key( i ) ) );
}
我想像这样创建一个容易看见的对象。
Object.keys(localStorage).reduce(function(obj, str) {
obj[str] = localStorage.getItem(str);
return obj
}, {});
我也用饼干做类似的事情。
document.cookie.split(';').reduce(function(obj, str){
var s = str.split('=');
obj[s[0].trim()] = s[1];
return obj;
}, {});
function listAllItems(){
for (i=0; i<=localStorage.length-1; i++)
{
key = localStorage.key(i);
alert(localStorage.getItem(key));
}
}
您可以使用localStorage.key(index)
函数返回字符串表示形式,其中index
是您要检索的第n个对象。
如果浏览器支持HTML5 LocalStorage,它还应该实现Array.prototype.map,启用它:
Array.apply(0, new Array(localStorage.length)).map(function (o, i) {
return localStorage.key(i);
})
由于问题提到找到键,我想我会提到显示每个键和值对,你可以这样做(基于凯文的答案):
for ( var i = 0, len = localStorage.length; i < len; ++i ) {
console.log( localStorage.key( i ) + ": " + localStorage.getItem( localStorage.key( i ) ) );
}
这将以“key:value”格式记录数据
(凯文:如果你愿意,可以随意把这些信息写进你的答案!)
我同意凯文他有最好的答案,但有时当您在本地存储中使用相同值的不同密钥时,例如您希望您的公共用户看到他们将项目添加到他们的篮子中的次数,您需要向他们展示你也可以使用这个次数:
var set = localStorage.setItem('key', 'value');
var element = document.getElementById('tagId');
for ( var i = 0, len = localStorage.length; i < len; ++i ) {
element.innerHTML = localStorage.getItem(localStorage.key(i)) + localStorage.key(i).length;
}
这将打印localStorage上的所有键和值:
ES6:
for (let i=0; i< localStorage.length; i++) {
let key = localStorage.key(i);
let value = localStorage[key];
console.log(`localStorage ${key}: ${value}`);
}