Я сохранил несколько пар ключевых значений, которые содержат определенную зашифрованную регистрационную информацию, используя переменные localstorage HTML5. Я добавил уникальный префикс для всех имен ключей, скажем TM_loginname
. Теперь я хочу очистить все пары key-value localstorage, ключ которых начинается с префикса TM_.
PS: Я тоже пробовал sessionstorage, но он очищается только тогда, когда браузер закрыт.
Очистить значения localstorage с определенным префиксом
Ответ 1
Удаление элемента во время итерации небезопасно, поэтому создайте массив для хранения ключей, которые необходимо удалить. Затем, итерации по этому массиву, чтобы удалить их:
var arr = []; // Array to hold the keys
// Iterate over localStorage and insert the keys that meet the condition into arr
for (var i = 0; i < localStorage.length; i++){
if (localStorage.key(i).substring(0,3) == 'TM_') {
arr.push(localStorage.key(i));
}
}
// Iterate over arr and remove the items by key
for (var i = 0; i < arr.length; i++) {
localStorage.removeItem(arr[i]);
}
Ответ 2
Использование lodash. Наслаждайтесь.
_.forIn(window.localStorage, (value: string, objKey: string) => {
if (true === _.startsWith(objKey, 'TM_')) {
window.localStorage.removeItem(objKey);
}
});
Ответ 3
сохранить в localStorage, используя
key = pref + version
function remLSPref(pref, newName) {
for (var key in localStorage) {
if (key.indexOf(pref) == 0) {
if (key != newName) {
localStorage.removeItem(key);
}
}
}
}
и используйте вот так:
var pref = 'myid_';
var key = pref + ver;
// rem old ls
remLSPref(pref, key);
Ответ 4
Вы можете:
- сохранить массив всех элементов, которые вы создали сами, или
- перебрать все элементы localStorage и отфильтровать, чтобы получить те, которые вы необходимо.
Ответ 5
Адаптация кончика github:
findLocalItems(query) {
var i,
results = [];
for (i in localStorage) {
if (localStorage.hasOwnProperty(i)) {
if (i.match(query) || (!query && typeof i === 'string')) {
var value = JSON.parse(localStorage.getItem(i));
results.push({ key: i, val: value });
}
}
}
return results; }
И после вызова функции:
var keysFounded = findLocalItems(key);
if (keysFounded && keysFounded.length > 0) {
keysFounded.forEach(k => {
localStorage.removeItem(k.key);
});
}