5

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

感谢您的投入。

4

2 回答 2

5

如果您的键/值具有固有的顺序(字母、数字等),那么在其中添加时间戳可能是多余的。尽管 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 对象的本质。上面的函数通过将键名嵌入到值中来解决这个问题。这样它仍然在那里,并且用于显示排序数组的函数可以完成将键与值分开的步法。

于 2011-07-06T05:46:21.713 回答
2

您必须以某种方式将时间戳与存储的值配对,您可以为每个值创建一个包装器对象,并将值和时间戳存储在一个对象中。假设您有一个myvalue要存储参考的值myref

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

然后,在另一页上,您需要将您的对象重新水化为一个数组并实现您的 compareFunction函数。

您的另一个选择是使用Web SQL 数据库索引数据库 API,它可以让您更自然地存储和查询这种多方面的信息,但您可能必须创建某种抽象包装器才能使事情轻松跨浏览器工作。

于 2010-10-20T12:04:11.460 回答