5

我的本地存储中有多个键:task-1,task-2, task-3 ...我正在寻找一种方法来获取以字符串“tasks-”开头的键的总数,以便将它放在我的循环中而不是localStorage.length.

事实上,如果我有另一个使用本地存储的应用程序,我的循环会返回一个与本地存储中所有键相对应的长度,包括相关应用程序之外的键。

   i=0;

   if(localStorage.getItem("task-"+i) != null){

     for( i = 0; i < localStorage.length; i++){ 

       console.log(i)

     }
  }

非常感谢你的帮助

4

3 回答 3

1

如果您控制这些项目的创建,将它们存储在一个对象中并使用 JSON 在对象和字符串之间进行转换会更有意义:

var tasksObject = {
    task1: ...,
    task2: ...,
    ...
};

window.localStorage.setItem('tasks', JSON.stringify(tasksObject));

... later ...

var tasks = JSON.parse(window.localStorage.getItem('tasks'));

for (var task in tasks) {
    // do stuff
}
于 2012-08-07T18:28:55.343 回答
0
var i, e, tasks=[];
for (i=0; (e=localStorage["task-"+i])!==undefined; i++) {
   console.log(e);
   tasks.push(e);
}

怎么样

localStorage['num-tasks'] = tasks.length;
于 2014-10-02T07:03:06.490 回答
0

语句应该切换。循环遍历所有内容,看看每个项目是否符合您的条件。

var count = 0;
for(i = 0; i < localStorage.length; i++){ 
    if(localStorage.getItem("task-"+i) != null){
        console.log(i)
        count++;
    }
}
// count contains number of items beginning with task
于 2012-08-07T18:29:20.803 回答