2010-10-18 9 views
4

J'utilise le stockage local pour stocker les entrées utilisateur et afficher les entrées sur une autre page. J'ai besoin d'un moyen de les trier en fonction de la date et l'heure d'édition les plus récentes. Existe-t-il un moyen de le faire avec HTML5. Si non, quelle est la manière la plus simple/la plus efficace de le faire?Tri du stockage local HTML5

Merci pour les entrées.

+0

Stockez-vous des objets codés JSON? Ne pouvez-vous pas horodater les entrées lorsque vous les ajoutez au stockage local? – robertc

+0

Je ne stocke pas d'objet JSON. – intl

+0

Aussi, je cherche un moyen de les trier en fonction d'un système de tri. La seule façon dont je peux penser à le faire maintenant est d'inclure un horodatage dans la valeur de stockage local. – intl

Répondre

1

Vous devez coupler l'horodatage avec la valeur stockée, vous pouvez créer un objet wrapper pour chaque valeur et stocker la valeur et l'horodatage dans un seul objet. En supposant que vous avez une valeur myvalue que vous souhaitez stocker en référence myref:

var d=new Date(); 
var storageObject = {}; 
storageObject.value = myvalue; 
storageObject.timestamp = d.getTime(); 
localStorage.setItem(myref, JSON.stringify(storageObject)); 

Sur l'autre page, vous devez alors réhydrater vos objets dans un tableau et implement your compareFunction fonction. Votre autre option serait d'utiliser Web SQL Database et Indexed Database API, ce qui vous permet de stocker et d'interroger plus naturellement ce type d'informations aux multiples facettes, mais vous devrez probablement créer une sorte d'enveloppe abstraite pour que les choses fonctionnent facilement à travers le navigateur.

3

Si vos clés/valeurs ont un ordre inhérent (alphabétique, numérique, etc.), il peut être superflu d'y insérer un horodatage. Bien que l'objet Stockage n'ait aucune méthode de tri, vous pouvez créer un nouveau tableau(), puis le trier.

function SortLocalStorage(){ 
    if(localStorage.length > 0){ 
     var localStorageArray = new Array(); 
     for (i=0;i<localStorage.length;i++){ 
      localStorageArray[i] = localStorage.key(i)+localStorage.getItem(localStorage.key(i)); 
     } 
    } 
    var sortedArray = localStorageArray.sort(); 
    return sortedArray; 
} 

L'inconvénient de ceci est que le tableau n'est pas associative, mais qui est par nature de l'objet Array JavaScript. La fonction ci-dessus résout cela en incorporant le nom de la clé dans la valeur. De cette façon, il est toujours là, et les fonctions que vous utiliseriez pour afficher le tableau trié peuvent faire le travail de séparation des clés des valeurs.

+0

J'avais besoin de la même chose et votre solution a fonctionné parfaitement pour moi. Merci. – rolinger