Цикл через localStorage в HTML5 и JavaScript
Итак, я думал, что могу просто перебирать localStorage как обычный объект, поскольку он имеет длину. Как я могу пройти через это?
localStorage.setItem(1,'Lorem');
localStorage.setItem(2,'Ipsum');
localStorage.setItem(3,'Dolor');
если я делаю localStorage.length
возвращает 3
что верно. Так что я бы предположил for...in
цикл будет работать.
Я думал что-то вроде:
for (x in localStorage){
$('body').append(localStorage[x]);
}
но безрезультатно. Есть идеи?
другая идея у меня была что-то вроде
localStorage.setItem(1,'Lorem|Ipsum|Dolor')
var split_list = localStorage.getItem(1).split('|');
, в котором for...in
работает.
6 ответов:
можно использовать
key
метод.localStorage.key(index)
возвращаетindex
th ключ (порядок определяется реализацией, но постоянен до тех пор, пока вы не добавите или удалите ключи).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));
В дополнение ко всем другим ответам, вы можете использовать $.каждый функции из библиотеки jQuery:
$.each(localStorage, function(key, value){ // key magic // value magic });
в конце концов, сделать объект с:
JSON.parse(localStorage.getItem (localStorage.ключ(key)));
самый простой способ-это:
Object.keys(localStorage).forEach(function(key){ console.log(localStorage.getItem(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. В то время как встроенные элементы являются либо функциями { [собственный код]}, либо в случае свойства length a number. Вы можете использовать переменную typeofKey для фильтрации только по строкам, поэтому только ваши элементы отображается.
Примечание это работает, даже если вы храните число или логическое значение в качестве значения, поскольку они оба хранятся в виде строк.
все эти ответы игнорируют различия между реализациями localStorage в разных браузерах. Участники в этой области должны в значительной степени квалифицировать свои ответы с платформами, которые они описывают. Одна реализация на уровне браузера документирована по адресу https://developer.mozilla.org/en/docs/Web/API/Window/localStorage и, хотя очень мощный, содержит только несколько основных методов. Циклический просмотр содержимого требует понимания реализации специфично для отдельных браузеров.