【发布时间】: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 答案对你有用:stackoverflow.com/questions/3138564/…
-
你的 localStorage 的实际长度是多少?尝试循环使用相同的数字而不是 100。我的思考过程是,存储在 100 之后的数据可能存在问题(不像您期望的格式)。
-
请使用
var i避免创建全局变量(这非常糟糕,尤其是对于循环变量)
标签: javascript arrays for-loop local-storage