HTML5本地存储排序

时间:2010-10-18 13:49:31

标签: javascript html html5 local-storage

我使用本地存储来存储用户条目,并在另一页面上显示条目。我需要一种方法来根据最新的编辑日期和时间对它们进行排序。有没有办法用HTML5做到这一点。如果没有,最简单/最有效的方法是什么?

感谢您的投入。

2 个答案:

答案 0 :(得分:4)

如果您的键/值具有固有的顺序(字母,数字等),那么在其中加入时间戳可能是多余的。尽管Storage对象没有排序方法,但您可以创建一个新的Array()然后对其进行排序。

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

这样做的缺点是数组不是关联的,但这本质上是JavaScript Array对象。上述函数通过将键名嵌入值中来解决此问题。这样它仍然在那里,你用来显示排序数组的函数可以做到将键与值分开的步法。

答案 1 :(得分:1)

您必须以某种方式将时间戳与存储值配对,您可以为每个值创建包装器对象,并将值和时间戳存储在单个对象中。假设您想要使用引用myvalue存储值myref

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

在另一页上,您需要将对象重新水化为数组和implement your compareFunction函数。

您的另一个选择是使用Web SQL DatabaseIndexed Database API,它可以让您更自然地存储和查询这种多方面的信息,但您可能必须创建某种抽象包装来制作东西轻松跨浏览器工作。