获取HTML5 localStorage密钥

我只是想知道如何获得localStorage所有关键值。


我试图用一个简单的JavaScript循环检索值

 for (var i=1; i <= localStorage.length; i++) { alert(localStorage.getItem(i)) } 

但是,只有当键是从1开始的累进数字时才起作用。


我如何获得所有的密钥,以显示所有可用的数据?

 for (var key in localStorage){ console.log(key) } 

编辑:这个答案得到了很多upvotes,所以我想这是一个常见的问题。 我觉得我欠任何人可能会绊倒我的答案,认为这是“正确”,只是因为它被接受进行更新。 事实是,上面的例子并不是真正做到这一点的正确方法。 最好和最安全的方法就是这样做:

 for ( var i = 0, len = localStorage.length; i < len; ++i ) { console.log( localStorage.getItem( localStorage.key( i ) ) ); } 

我喜欢像这样创build一个容易看见的对象。

 Object.keys(localStorage).reduce(function(obj, str) { obj[str] = localStorage.getItem(str); return obj }, {}); 

我也用cookies来做类似的事情。

 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)函数返回string表示forms。

如果浏览器支持HTML5 LocalStorage,它也应该实现Array.prototype.map,启用它:

 Array.apply(0, new Array(localStorage.length)).map(function (o, i) { return localStorage.key(i); }) 

由于提到的问题find了键,我想我会提到,要显示每个键和值对,你可以这样做(基于凯文的答案):

 for ( var i = 0, len = localStorage.length; i < len; ++i ) { console.log( localStorage.key( i ) + ": " + localStorage.getItem( localStorage.key( i ) ) ); } 

这将以“key:value”格式logging数据

(凯文:如果你愿意的话,随意把这个信息join你的答案!)

我同意凯文他有最好的答案,但有时当你有不同的关键在你的本地存储与相同的价值,例如你想让你的公共用户看到他们有多less次他们的项目添加到他们的篮子,你需要向他们展示次数以及你可以使用这个:

 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; } 

我们也可以通过名字来阅读。

假设我们已经用这个名字“user”保存了这个值

 $localStorage.user = user_Detail; 

然后我们可以通过使用它来读取它

 localStorage["ngStorage-user"]; 

我用它,它工作顺利,不需要做for循环