Как получить копию localStorage?
Собственно это и есть вопрос который сейчас меня интересует.
Собираюсь в юзерскрипте вызывать значения из массива localStorage, с последующим удалением этого значения. До тех пор пока длина массива не будет равна 0. Проблема лишь в том что этот массив в localStorage, будет нужен мне и в дальнейшем, а действия выше удалят из него все значения. |
geekvar,
:-? |
var copy = localStorage; |
geekvar,
только вот зачем вам что-то удалять если вам это еще нужно, просто циклом пройдитесь, сделайте свои черные дела. |
Не знаю как правильно, но он перебирается как обычный объект
<html>
<head>
<meta charset = "utf-8" />
<style>
</style>
</head>
<body>
<script>
localStorage.setItem("foo", 1)
localStorage.setItem("bar", 1)
localStorage.setItem("baz", 1)
myCopy = {}
for(var i in localStorage){
if(!localStorage.hasOwnProperty(i)) break
myCopy[i] = localStorage[i]
}
console.log(myCopy)
</script>
</body>
</html>
|
Цитата:
Или именно это и нужно ТСу? |
localStorage.setItem("foo", 1)
localStorage.setItem("bar", 1)
localStorage.setItem("baz", 1)
myCopy = JSON.parse(JSON.stringify(localStorage));
console.log(myCopy);
|
Malleys,
Это тоже не копия, оно уничтожит информацию о типах |
sortarray, разве в localStorage пишется что-то кроме строк?
|
Цитата:
|
localStorage так и так уничтожает инфо о типах, поскольку приводит назначенные ключи к строковому предствлению
localStorage.re = /a/gi; alert(localStorage.re.constructor.name); // String, а не RegExp |
Ещё придумал способ скопировать localStorage
myCopy = Object.assign({}, localStorage);
console.log(myCopy);
|
Цитата:
|
Да, Вы правы, похоже, приведения к строкам происходят через setItem, там все хранится в строках
|
j0hnik, в цикле пройти не получится, т.к. в localStorage хранятся определенные значения, которые подставляются к концу ссылки, и происходит переход по этой новой ссылке. Н-р: сайт.ру/профиль.php?игрок=значение
Поэтому чтобы исключить "зацикливание" юзерскрипта на одной странице, единственное что пришло мне в голову удалить использованное значение из localStorage.
localStorage.setItem('activePL', JSON.stringify(data));
В браузере нашел созданный localStorage с ключем activePL. Теоретически единственное что осталось, чтобы все заработало, это скопировать localStorage выше с новым ключем н-р copeActivePL. |
geekvar,
Так сохраните отдельный ключ в том же localStorage и модифицируйте его как вам нужно. |
Все, наконец получилось включить мозги. Спасибо за ответы!
|
Цитата:
Недавно вышло 9-ое издание спецификации ECMAScript, в котором описан оператор расширения объекта.
myCopy = { ...localStorage };
console.log(myCopy);
|
| Часовой пояс GMT +3, время: 21:03. |