HTML5本地存储排序

int*_*ntl 5 html javascript html5 local-storage

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

感谢您的投入.

Cha*_*ock 5

如果您的键/值具有固有的顺序(字母,数字等),则在它们中添加时间戳可能是多余的。尽管Storage对象没有sort方法,但是您可以创建一个新的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;
}
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是,数组不是关联的,而是JavaScript Array对象的本性。上面的函数通过将键名称嵌入值中来解决此问题。这样,它仍然存在,并且用于显示排序数组的函数可以完成将键与值分离的工作。


rob*_*rtc 2

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

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

在另一页上,您需要将对象重新水合到数组中并实现compareFunction函数。

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