所以,我认为我可以像普通对象一样循环遍历localStorage,因为它有一个长度。我该如何循环使用?
localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');
如果我执行localStorage.length
,则返回3
这是正确的。所以我假设一个for...in
循环可以工作。
我在想这样的事情:
for (x in localStorage){
console.log(localStorage[x]);
}
但无济于事。有什么想法吗?
我的另一个想法是
localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');
for...in
确实有效。
答案 0 :(得分:122)
您可以使用key
方法。 localStorage.key(index)
返回index
键(订单是实现定义的,但在您添加或删除键之前是不变的。)
for (var i = 0; i < localStorage.length; i++){
$('body').append(localStorage.getItem(localStorage.key(i)));
}
如果订单很重要,您可以存储JSON序列化数组:
localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));
规范草案声称支持structured clone的任何对象都可以是值。但这似乎还不支持。
编辑:要加载数组,请添加到该数组,然后存储:
var words = JSON.parse(localStorage.getItem("words"));
words.push("hello");
localStorage.setItem("words", JSON.stringify(words));
答案 1 :(得分:21)
除了所有其他答案之外,您还可以使用jQuery库中的$.each function:
$.each(localStorage, function(key, value){
// key magic
// value magic
});
最终,使用以下内容获取对象:
<强> JSON 强> .parse(localStorage.getItem(localStorage.key(键)));
答案 2 :(得分:14)
最简单的方法是:
Object.keys(localStorage).forEach(function(key){
console.log(localStorage.getItem(key));
});
答案 3 :(得分:7)
这适用于Chrome:
for(var key in localStorage) {
$('body').append(localStorage.getItem(key));
}
答案 4 :(得分:1)
在此前面的答案的基础上,该函数将在不知道键值的情况下通过键循环本地存储。
function showItemsByKey() {
var typeofKey = null;
for (var key in localStorage) {
typeofKey = (typeof localStorage[key]);
console.log(key, typeofKey);
}
}
如果检查控制台输出,您将看到代码添加的项目都具有typeof字符串。而内置项是函数{[native code]},或者在length属性的情况下是数字。您可以使用typeofKey变量来仅过滤字符串,以便只显示您的项目。
请注意,即使您将数字或布尔值存储为值,这也会有效,因为它们都存储为字符串。
答案 5 :(得分:1)
所有这些答案都忽略了跨浏览器的localStorage实现之间的差异。 此域中的贡献者应该使用他们描述的平台严格限定他们的响应。 一个浏览器范围的实现记录在 https://developer.mozilla.org/en/docs/Web/API/Window/localStorage虽然非常强大,但只包含一些核心方法。循环使用内容需要了解特定于各个浏览器的实现。
答案 6 :(得分:1)
localStorage 将数据保存为键值对,并且可以通过函数 localStorage.getItem(key) 访问这些值,该函数以键为参数并返回具有给定键的键值对的值。< /p>
localStorage 的键值对可以通过函数 localStorage.setItem(key, value) 设置。
如果你想遍历 localStorage,你可以使用数字作为键。
localStorage.setItem(localStorage.length, value);
通过上面的这条指令,您将一个带有升序键的值附加到 localStorage,因为每次调用都会增加 localStorage 的长度。
现在可以使用以下 for 循环来迭代 localStorage。
for (let i = 0; i < localStorage.length; i++){
console.log(localStorage.getItem(i));
}
使用“let”或“var”来声明变量并不重要。两者的区别在于范围。如果你想了解更多关于 let 和 var 的区别,我会推荐你看教程点的解释(https://www.tutorialspoint.com/difference-between-var-and-let-in-javascript)。
答案 7 :(得分:0)
我们可以像其他任何对象一样使用JavaScript for/in Statement遍历它。
然后我们将使用.getItem()
来访问每个键(x)的值。
for (x in localStorage){
console.log(localStorage.getItem(x));
}
答案 8 :(得分:0)
for (const [key, value] of Object.entries(localStorage)) {
console.log(key, value);
}
这里我们分别遍历本地存储中的每个键和值。