Мне просто интересно, как получить все ключевые значения localStorage
.
Я попытался получить значения с помощью простого цикла JavaScript
for (var i=1; i <= localStorage.length; i++) {
alert(localStorage.getItem(i))
}
Но это работает только в том случае, если ключи представляют собой прогрессивные числа, начиная с 1.
Как получить все ключи, чтобы отобразить все доступные данные?
javascript
html
key
local-storage
Симона
источник
источник
Ответы:
в ES2017 вы можете использовать:
источник
Object.keys()
работает как ожидалось, а?РЕДАКТИРОВАТЬ: этот ответ получает много голосов, поэтому я думаю, что это общий вопрос. Я чувствую, что обязан всем тем, кто может наткнуться на мой ответ и подумать, что это «правильно» только потому, что было принято сделать обновление. Правда в том, что приведенный выше пример не совсем правильный способ сделать это. Самый лучший и безопасный способ сделать это так:
источник
localStorage.length
а не использовать его напрямую? 2) Зачем объявлять это внутри цикла for? 3) Почему++i
предпочтительнееi++
?++i
наиболее определенно не делает начало цикла вi = 1
. Третье выражение в скобках вычисляется после каждой итерации.i++
и++i
оба имеют одинаковый эффектi
. Разница в том, что++i
оценивается до нового значенияi
после увеличения, тогда какi++
оценивается до значенияi
до увеличения. Здесь нет абсолютно никакой разницы, потому что все, что нас волнует, это побочный эффект увеличенияi
, а не значение выражения.Object.keys(localStorage)
отлично подходит для этого сценария, если вам не нужно поддерживать IE <9.localStorage.key( i )
детали.Мне нравится создавать из этого легко видимый объект.
Я делаю то же самое с печеньем.
источник
источник
Вы можете использовать
localStorage.key(index)
функцию для возврата строкового представления, гдеindex
находится n-й объект, который вы хотите получить.источник
Если браузер поддерживает HTML5 LocalStorage, он также должен реализовать Array.prototype.map, что позволяет:
источник
new Array(this.localStorage.length).fill(0)
что-то менее хакерское, чем использовать apply imo.Поскольку в вопросе упоминалось о поиске ключей, я решил упомянуть, что для отображения каждой пары ключ-значение вы можете сделать это следующим образом (основываясь на ответе Кевина):
Это позволит регистрировать данные в формате «ключ: значение»
(Кевин: не стесняйтесь просто использовать эту информацию в своем ответе, если хотите!)
источник
Это напечатает все ключи и значения в localStorage:
ES6:
источник
Вы можете получить ключи и значения, как это:
источник
Я согласен с Кевином, у него есть лучший ответ, но иногда, когда у вас есть разные ключи в вашем локальном хранилище с одинаковыми значениями, например, вы хотите, чтобы ваши публичные пользователи видели, сколько раз они добавляли свои товары в свои корзины, вам нужно показать им количество раз, а затем вы можете использовать это:
источник
Для тех, кто упоминает об использовании
Object.keys(localStorage)
... не потому, что он не будет работать в Firefox (как ни странно, потому что Firefox верен спецификации). Учти это:Поскольку key, getItem и setItem являются прототипными методами, они
Object.keys(localStorage)
будут только возвращаться["key2"]
.Лучше всего сделать что-то вроде этого:
источник
object.keys()
... Я обновлю свой ответ, чтобы отразить это.[Exposed=Window]
. Это приводит к поведению, которое я описываю. Если бы он был указан с помощью,[Exposed=Window,OverrideBuiltins]
это дало бы ожидаемое нами поведение, но спецификация не указываетOverrideBuiltins
. Вы можете увидеть обсуждение этого в whatwg / html здесь: github.com/whatwg/html/issues/183Мы также можем прочитать по имени.
Скажем, мы сохранили значение с именем «пользователь», как это
Тогда мы можем прочитать это с помощью
Я использовал его, и он работает гладко, не нужно делать цикл for
источник