2012-08-07 2 views
3

J'ai plusieurs clés dans mon localstorage: task-1,task-2, task-3 ... Je cherche un moyen d'obtenir le total des clés commençant par la chaîne "tasks-" afin de le placer dans ma boucle au lieu de localStorage.length.getItem localstorage contenant une chaîne

En fait, si j'ai une autre application qui utilise localstorage, ma boucle me renvoie une longueur correspondant à TOUTES les clés du localStorage, y compris celles qui sont hors de l'application en question.

i=0; 

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

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

     console.log(i) 

    } 
    } 

Merci beaucoup pour votre aide

Répondre

1

Si vous contrôlez la création de ces éléments, il serait beaucoup plus logique de les stocker dans un objet et utiliser JSON pour convertir entre l'objet et la chaîne:

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 
} 
0

Les instructions doivent être permutées. Boucle sur tout et voir si chaque élément correspond à votre condition.

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 
0
var i, e, tasks=[]; 
for (i=0; (e=localStorage["task-"+i])!==undefined; i++) { 
    console.log(e); 
    tasks.push(e); 
} 

Et que diriez-vous

localStorage['num-tasks'] = tasks.length; 
Questions connexes