我使用本地存储来存储用户条目,并在另一页面上显示条目。我需要一种方法来根据最新的编辑日期和时间对它们进行排序。有没有办法用HTML5做到这一点。如果没有,最简单/最有效的方法是什么?
感谢您的投入。
答案 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 Database和Indexed Database API,它可以让您更自然地存储和查询这种多方面的信息,但您可能必须创建某种抽象包装来制作东西轻松跨浏览器工作。