2010-10-18 105 views
4

我正在使用本地存儲來存儲用戶條目,並在另一個頁面上顯示條目。我需要一種方法來根據最近的編輯日期和時間對它們進行排序。有沒有辦法用HTML5做到這一點。如果不是,那麼最簡單/最有效的方法是什麼?HTML5本地存儲排序

感謝您的意見。

+0

您是否存儲JSON編碼的對象?你能不能在添加到本地存儲的時候標記這些條目? – robertc 2010-10-18 16:33:29

+0

我沒有存儲JSON對象。 – intl 2010-10-18 17:55:29

+0

另外,我正在尋找一種基於分揀系統對它們進行分類的方法。我現在想的唯一辦法就是在本地存儲值中包含一個時間戳。 – intl 2010-10-18 18:57:48

回答

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,它可以讓您更自然地存儲和查詢這種多方面的信息,但您可能必須創建某種抽象包裝,以使事情輕鬆跨瀏覽器。

3

如果你的鍵/值有一個固有的順序(按字母,數字等),那麼在它們中加入時間戳可能是多餘的。雖然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對象的性質。上面的函數通過將鍵名嵌入到值中解決了這個問題。這樣它仍然在那裏,你用來顯示排序數組的函數可以完成將鍵和值分開的腳步。

+0

我需要同樣的東西,您的解決方案對我來說非常合適。謝謝。 – rolinger 2016-08-05 01:08:27