获取 HTML5 localStorage 键

IT技术 javascript html key local-storage
2021-02-03 19:13:16

我只是想知道如何在localStorage.


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

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

但它只有在键是渐进式数字时才有效,从 1 开始。


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

6个回答
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 ) ) );
}
在这个链接中...... stackoverflow.com/questions/15313606/ ...... 为什么他们使用所有这些奇怪的方法来访问localStorage?
2021-03-25 19:13:16
还需要注意的是,如果您想显示密钥本身的名称,您可以使用localStorage.key( i )部件来实现。
2021-03-27 19:13:16
你真的尝试过吗?++i绝对不会使循环从i = 1. 括号内的第三个表达式每次迭代计算。i++并且++i两者对 具有完全相同的效果i区别在于,++i计算为递增后i,而i++计算为递增i 的值这在这里完全没有区别,因为我们只关心 increment 的副作用i,而不是表达式的值。
2021-04-04 19:13:16
值得注意的是,现在Object.keys(localStorage)对于这种情况非常有效,只要您不需要支持 IE < 9。
2021-04-06 19:13:16
关于“最佳/最安全”代码的几个问题: 1)为什么要声明localStorage.length而不直接使用它?2)为什么在for循环中声明它?3) 为什么++i优先于i++?
2021-04-07 19:13:16

在 ES2017 中,您可以使用:

Object.entries(localStorage)
返回键和值是不正确的,这篇文章的标题是“获取 HTML5 localStorage 键”。正确答案在上面Object.keys()
2021-03-25 19:13:16
我假设也Object.keys()按预期工作?
2021-04-03 19:13:16

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

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;
}, {});
我喜欢这种迭代对象的风格。
2021-03-25 19:13:16
function listAllItems(){  
    for (i=0; i<localStorage.length; i++)  
    {  
        key = localStorage.key(i);  
        alert(localStorage.getItem(key));
    }  
}

您可以使用该localStorage.key(index)函数返回字符串表示,其中index是您要检索的第 n 个对象。