Javascript цикл через локальное хранилище, чтобы найти элемент - PullRequest
1 голос
/ 18 марта 2012

Я широко использую локальное хранилище, и это здорово, потому что это помогает поддерживать состояние, сохраняя сеанс на клиенте. Проблема, однако, заключается в обновлении сеанса.

У меня есть несколько списков объектов, которые я сериализирую в json и помещаю в сеанс. Объекты имеют несколько свойств, в том числе идентификатор и дату. В другой момент мне нужно пройтись по этим спискам, чтобы узнать, содержит ли один из списков один из объектов, которые я ищу по идентификатору.

Ключ, который я использую для хранения моего json, включает дату; как это:

var TheData = JSON.stringify(TheListOfMyObjects);
var SessionKey = 'TheListOfObjectsFor' + TheMonth + "." + TheDay + "." + TheYear;
localStorage.setItem(SessionKey, TheData);

Теперь мне нужно проверить, есть ли в сеансе объект с определенным идентификатором. Я не знаю свойства даты объекта, только его ID. Я также не знаю, какие даты имеют значение в сеансе или нет.

Как я могу найти свой объект по идентификатору? Было бы хорошо, если бы я мог загрузить сессию в память, чтобы я мог пройти через нее.

1 Ответ

3 голосов
/ 18 марта 2012

Если ID находится внутри объекта, вам необходимо извлечь каждый localStorage объект и сравнить поля.

var obj1 = {ID  : "a",  field: 543}
var obj2 = {ID  : "b",  field: 161}
var obj3 = {ID  : "c",  field: 425}


localStorage.setItem("item1", JSON.stringify(obj1));
localStorage.setItem("item2", JSON.stringify(obj2));
localStorage.setItem("item3", JSON.stringify(obj3));


var ID_Needed = "b";

for(var i = 0; i < localStorage.length; i++) {

    var obj = JSON.parse(localStorage.getItem(localStorage.key(i)));

    if(obj.ID == ID_Needed) {
        console.log(obj);
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...