javascript - 循环并搜索 localStorage 中的所有项目

标签 javascript arrays for-loop local-storage

我正在尝试遍历 localStorage 以通过 localStorage.length 获取所有项目适用于我的搜索算法。如果我改变:i < localStorage.length在 for 循环中只是一个数字,即:for (i=0; i<100; i++)而不是:(i=0; i<=localStorage.length-1; i++) , everything 有效。但是,我确实意识到问题可能出在搜索算法上。

获取所有项目的代码:

   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 怎么了? ,或者搜索算法有什么问题?

最佳答案

localStorage 是一个对象,而不是一个数组。 尝试 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
}

关于javascript - 循环并搜索 localStorage 中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10083098/

相关文章:

c - 通过函数参数从另一个文件访问静态全局数组

java - 使用 Java 流收集在 `for` 循环中生成的对象

php - 我应该如何在 select data mysql 中使用 for (i++) ?那可能吗?

javascript - 在 div 中重新定位图像

javascript - Promise.all : Order of resolved values

c++ - 如何将二维字符数组传递给c中的函数

c# - 将字节数组数据映射到 C# 中的结构

javascript - 如何检测Backbone.History Referer(历史长度)

javascript - 如何不使 window.location 相对于文件

c++ - for循环在循环条件内执行,c++