[英]Looping through localStorage in HTML5 and JavaScript
所以,我想我可以像普通對象一樣循環遍歷 localStorage,因為它有長度。 我怎樣才能遍歷這個?
localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');
如果我做一個localStorage.length
它返回3
這是正確的。 所以我假設for...in
循環會起作用。
我在想這樣的事情:
for (x in localStorage){
console.log(localStorage[x]);
}
但無濟於事。 有任何想法嗎?
我的另一個想法是
localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');
其中for...in
確實有效。
您可以使用key
方法。 localStorage.key(index)
返回第index
個鍵(順序是實現定義的,但在您添加或刪除鍵之前保持不變)。
for (var i = 0; i < localStorage.length; i++){
$('body').append(localStorage.getItem(localStorage.key(i)));
}
如果順序很重要,您可以存儲一個 JSON 序列化數組:
localStorage.setItem("words", JSON.stringify(["Lorem", "Ipsum", "Dolor"]));
規范草案聲稱任何支持結構化克隆的對象都可以是一個值。 但這似乎尚未得到支持。
編輯:要加載數組,添加到它,然后存儲:
var words = JSON.parse(localStorage.getItem("words"));
words.push("hello");
localStorage.setItem("words", JSON.stringify(words));
最簡單的方法是:
Object.keys(localStorage).forEach(function(key){
console.log(localStorage.getItem(key));
});
除了所有其他答案之外,您還可以使用 jQuery 庫中的$.each函數:
$.each(localStorage, function(key, value){
// key magic
// value magic
});
最后,使用以下命令獲取對象:
JSON .parse(localStorage.getItem(localStorage.key(key)));
這在 Chrome 中對我有用:
for(var key in localStorage) {
$('body').append(localStorage.getItem(key));
}
建立在前面的答案的基礎上是一個函數,它將在不知道鍵值的情況下通過鍵循環遍歷本地存儲。
function showItemsByKey() {
var typeofKey = null;
for (var key in localStorage) {
typeofKey = (typeof localStorage[key]);
console.log(key, typeofKey);
}
}
如果您檢查控制台輸出,您將看到代碼添加的項目都有一個 typeof 字符串。 而內置項目要么是函數 { [native code] },要么是長度屬性的數字。 您可以使用 typeofKey 變量僅對字符串進行過濾,以便僅顯示您的項目。
請注意,即使您將數字或布爾值存儲為值,這也有效,因為它們都存儲為字符串。
localStorage
是一個Object
。
我們可以像任何其他對象一樣使用JavaScript for/in Statement循環遍歷它。
我們將使用.getItem()
來訪問每個鍵 (x) 的值。
for (x in localStorage){
console.log(localStorage.getItem(x));
}
所有這些答案都忽略了跨瀏覽器的 localStorage 實現之間的差異。 這個領域的貢獻者應該用他們所描述的平台來充分限定他們的回答。 https://developer.mozilla.org/en/docs/Web/API/Window/localStorage記錄了一種瀏覽器范圍的實現,雖然非常強大,但僅包含一些核心方法。 循環瀏覽內容需要了解特定於各個瀏覽器的實現。
localStorage 將數據保存為鍵值對,並且可以通過函數 localStorage.getItem(key) 訪問這些值,該函數以鍵為參數並返回具有給定鍵的鍵值對的值。
localStorage 的鍵值對可以通過函數 localStorage.setItem(key, value) 設置。
如果您想遍歷 localStorage,您可以使用數字作為鍵。
localStorage.setItem(localStorage.length, value);
使用上面的這條指令,您將一個帶有升序鍵的值附加到 localStorage,因為每次調用都會增加 localStorage 的長度。
現在可以使用以下 for 循環來迭代 localStorage。
for (let i = 0; i < localStorage.length; i++){
console.log(localStorage.getItem(i));
}
使用“let”還是“var”來聲明變量並不重要。 兩者的區別在於范圍。 如果您想更多地了解 let 和 var 之間的區別,我會建議您通過 tutorialspoint ( https://www.tutorialspoint.com/difference-between-var-and-let-in-javascript ) 進行解釋。
for (const [key, value] of Object.entries(localStorage)) {
console.log(key, value);
}
這里我們分別循環遍歷本地存儲中的每個鍵和值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.