循环和搜索 localStorage 中的所有项目
Posted
技术标签:
【中文标题】循环和搜索 localStorage 中的所有项目【英文标题】:Loop & search through ALL items in localStorage 【发布时间】:2012-04-22 09:50:08 【问题描述】:我正在尝试遍历 localStorage 以通过localStorage.length
获取与我的搜索算法一起使用的所有项目。如果我将 for 循环中的 i < localStorage.length
更改为简单的数字,即:for (i=0; i<100; i++)
而不是:(i=0; i<=localStorage.length-1; i++)
,everthing 有效。但是,我确实意识到问题可能出在搜索算法上。
获取所有项目的代码:
var name = new Array();
for (var i = 0; i <= localStorage.length - 1; i++) // i < 100 works perfectly
key = localStorage.key(i);
val = localStorage.getItem(key);
value = val.split(","); //splitting string inside array to get name
name[i] = value[1]; // getting name from split string
我的工作(!?)搜索算法:
if (str.length == 0)
document.getElementById("searchResult").innerhtml = "";
else
if(str.length > 0)
var hint = "";
for(var i=0; i < name.length; i++)
if(str.toLowerCase() == (name[i].substr(0, str.length)).toLowerCase()) //not sure about this line
if(hint == "")
hint = name[i];
else
hint = hint + " <br /> " + name[i];
if(hint == "")
document.getElementById("searchResult").innerHTML=str + " står inte på listan";
else
document.getElementById("searchResult").innerHTML = hint;
我的localStorage.length
有什么问题,或者搜索算法有什么问题?
【问题讨论】:
也许这个 SO 答案对你有用:***.com/questions/3138564/… 你的 localStorage 的实际长度是多少?尝试循环使用相同的数字而不是 100。我的思考过程是,存储在 100 之后的数据可能存在问题(不像您期望的格式)。 请使用var i
避免创建全局变量(这非常糟糕,尤其是对于循环变量)
【参考方案1】:
问题现已解决。问题是每次将数据保存到 localStorage 时,由于错误编写的 for 循环(在 setItem 部分中),一个额外的空项目存储在本地数据库的底部。arrayIndex
【讨论】:
【参考方案2】:localStorage 是 object
,而不是 array
。
试试for(var i in window.localStorage)
:
for(var i in window.localStorage)
val = localStorage.getItem(i);
value = val.split(","); //splitting string inside array to get name
name[i] = value[1]; // getting name from split string
【讨论】:
对象和数组在上下文中的行为是否相同,即通过数组或对象语法访问值 @VarinderSingh 看起来虽然!(localStorage instanceof Array)
,localStorage
对象确实有一个length
属性。写这个答案时我没有意识到这一点。是这个意思吗?
是的,localStorage
确实拥有length
属性。所以,根据问题localStorage
的问题,可以使用琐碎的for()
循环遍历项目
如果您的应用在客户端运行,则遍历本地存储中的所有数据可能会给您的应用带来开销
localStorage 和 window.localStorage 是一样的***.com/questions/12660088/…以上是关于循环和搜索 localStorage 中的所有项目的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript_Html5_LocalStorage项目demo
Angular 6 BehaviorSubject 使用 LocalStorage
在 HTML5 和 JavaScript 中循环访问 localStorage