获取HTML5 localStorage密钥

时间:2011-12-07 17:04:00

标签: javascript html5 key local-storage

我只是想知道如何在localStorage中获取所有键值。


我尝试使用简单的JavaScript循环检索值

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

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


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

13 个答案:

答案 0 :(得分:271)

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

答案 1 :(得分:26)

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

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;
}, {});

答案 2 :(得分:12)

function listAllItems(){  
    for (i=0; i<=localStorage.length-1; i++)  
    {  
        key = localStorage.key(i);  
        alert(localStorage.getItem(key));
    }  
}

答案 3 :(得分:8)

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

答案 4 :(得分:7)

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

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

答案 5 :(得分:4)

由于问题提到找到密钥,我想我会提到要显示每个密钥和值对,你可以这样做(根据Kevin的回答):

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

这将以“key:value”

格式记录数据

(凯文:如果你愿意,可以随意把这些信息带到你的答案中!)

答案 6 :(得分:2)

您可以获得以下键和值:

for (let [key, value] of Object.entries(localStorage)) {
  console.log(`${key}: ${value}`);
}

答案 7 :(得分:0)

我同意凯文他有最好的答案,但有时当您在本地存储中使用相同值的不同密钥时,例如您希望公众用户查看他们将项目添加到他们的篮子中的次数,您需要向他们展示次数,然后你可以使用它:

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

答案 8 :(得分:0)

在ES2017中,您可以使用:

for (int i = 1100; i < 20000; i++) {
    stmt.addBatch("insert into student (id, name) values (1100+i, 
        'yang"+i"') ");
}
stmt.executeBatch();
con.commit();

答案 9 :(得分:0)

这将在localStorage上打印所有键和值:

ES6:

for (let i=0; i< localStorage.length; i++) {
    let key = localStorage.key(i);
    let value = localStorage[key];
    console.log(`localStorage ${key}:  ${value}`);
}

答案 10 :(得分:0)

您可以使用 Object.assign 更简单地创建对象:

// returns an object of all keys/values in localStorage
Object.assign({}, window.localStorage);

您可以阅读更多相关信息here at MDN

The caniuse page 表示目前支持率约占所有浏览器份额的 95%(IE 是个奇葩——真是令人惊讶)。

答案 11 :(得分:-1)

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

假设我们已使用名称&#39; user&#39;保存了该值。像这样

$localStorage.user = user_Detail;

然后我们可以使用

来阅读它
localStorage["ngStorage-user"];

我使用它并且它工作顺利,不需要执行for循环

答案 12 :(得分:-1)

对于那些使用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));
}