Как получить копию 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, время: 08:11. |