Очищення локального зберігання в JavaScript?


Відповіді:


1371

Використовуйте це, щоб очистити localStorage:

localStorage.clear();

6
@BakedInhalf зовсім не є. Можливо, ваш додаток налаштовує це знову?
— дестан

5
Я закликаю localStorage.clear (), коли моя програма запускається, але навіть якщо я закриваю браузер, очищаю кеш тощо, дані все ще є. Я знаю це, тому що я встановив властивість "екземпляр" на своїй моделі на випадкове число при ініціалізації, і для даного ідентифікатора властивість екземпляра завжди однакове.
— sydneyos

11
@ digital-plane Чи очистить це локальне сховище від певного домену чи всього сховища?
— crisron

18
clear()видалить усі локальні ключі та значення із конкретного домену, на якому ви перебуваєте. Через CORS Javascript не може отримати значення localStorage з будь-якого іншого домену.
— Fizzix

1
@BakedInhalf правий, він залишається, поки ви важко оновіть сторінку. Коли ви очистите локальний сховище та заповніть його одразу, він відновить попередній вміст і додасть до нього новий елемент. Коли ви очистите локальний сховище та зробите оновлення, воно порожнє, і ви можете розпочати його знову.
— Кібер

198

Якщо ви хочете видалити певний Елемент або змінну з локального сховища користувача, ви можете використовувати

localStorage.removeItem("name of localStorage variable you want to remove");

1
Привіт, @Ajeet Якщо я не хочу видаляти певний предмет, чи є спосіб це зробити? Наприклад, "deleteItemNotIn (ключ)", "видалити всі, крім визначеного ключа"? Заздалегідь спасибі.
— Me_developer

Привіт, @Shadow Якщо я не хочу видаляти певний предмет, чи є спосіб це зробити? Наприклад, "deleteItemNotIn (ключ)", "видалити всі, крім визначеного ключа"? Заздалегідь спасибі.
— Me_developer

Я розібрався у вирішенні своєї проблеми: - if (localStorage.getItem (specialKey) == null) {localStorage.clear (); } Але якщо у вас є краще рішення, то повідомте мене. Дякую.
— Me_developer

1
@learner Отже, ви хочете видалити всі ключі, крім конкретного ключа , правда? Для цього ви можете зробити щось подібне var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
— Ajeet Lakhani

1
Також можливо: отримання значення, очищення та встановлення значення знову, більш універсальне. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
— Майкл Б.


11

Ось функція, яка дозволить вам видалити всі об’єкти localStorage за винятком. Для цієї функції вам знадобиться jQuery . Ви можете завантажити суть .

Ви можете назвати це так

let clearStorageExcept = function(exceptions) {
  let keys = [];
  exceptions = [].concat(exceptions); // prevent undefined

  // get storage keys
  $.each(localStorage, (key) => {
    keys.push(key);
  });

  // loop through keys
  for (let i = 0; i < keys.length; i++) {
    let key = keys[i];
    let deleteItem = true;

    // check if key excluded
    for (let j = 0; j < exceptions.length; j++) {
      let exception = exceptions[j];
      if (key == exception) {
        deleteItem = false;
      }
    }

    // delete key
    if (deleteItem) {
      localStorage.removeItem(key);
    }
  }
};

1
Дивна річ, що undefinedце дійсний ключ для setItemіgetItem
— ebob

@ebob Так, це може здатися дивним, але ні, насправді це не так. localStorage функціонує аналогічно об'єктам, коли ключі перетворюються на рядки. Наприклад, використовуючи undefined як ключ, подібний до цього:, localStorage.setItem(undefined, 'example Txt!')буде активовано зберігати його під ключем, викликаним так, 'undefined'як ви можете бачити при запуску наступного коду. console.log(localStorage.getItem('undefined')) виведе example Txt!.
— Джек Гіффін

8

Локальне зберігання додається в глобальному масштабі window. Коли ми реєструємо локальне зберігання у хромованих розробниках, ми бачимо, що він має такі API:

введіть тут опис зображення

Для видалення елементів ми можемо використовувати такі API:

  1. localStorage.clear(): Очищає весь локальний магазин
  2. localStorage.removeItem('myItem'): Для видалення окремих елементів

4

Спочатку все спочатку потрібно перевірити, щоб переконатися, що localStorage увімкнено. Я рекомендую зробити це так:

var localStorageEnabled = false;
try { localStorageEnabled = !!localStorage; } catch(e) {};

Так, ви можете (в деяких випадках) просто перевірити, чи є localStorage членом об’єкта вікна. Однак існують варіанти пісочниці iframe (серед іншого), які викинуть виняток, якщо ви навіть спробуєте отримати доступ до індексу "localStorage". Таким чином, з міркувань кращих практик це найкращий спосіб перевірити, чи активовано локальне зберігання. Тоді ви можете просто очистити локальний сховище так.

if (localStorageEnabled) localStorage.clear();

Наприклад, ви можете очистити localStorage після появи помилки у веб-браузерах веб-програм.

// clears the local storage upon error
if (localStorageEnabled)
  window.onerror = localStorage.clear.bind(localStorage);

У наведеному вище прикладі вам потрібно, .bind(window)тому що без нього localStorage.clearфункція буде працювати в контексті windowоб'єкта, замість того, щоб localStorageоб'єкт мовчки вийшов з ладу. Щоб продемонструвати це, подивіться приклад нижче:

window.onerror = localStorage.clear;

те саме, що:

window.onerror = function(){
    localStorage.clear.call(window);
}

3

Якщо ви хочете очистити весь елемент, який ви зберігаєте в localStorage, тоді

localStorage.clear();

Використовуйте це, щоб очистити весь збережений ключ.

Якщо ви хочете очистити / видалити лише певний ключ / значення, тоді ви можете скористатися deleteItem (ключ) .

localStorage.removeItem('yourKey');

2
localStorage.clear();

або

window.localStorage.clear();

очистити конкретний предмет

window.localStorage.removeItem("item_name");

Щоб видалити конкретне значення за допомогою id:

var item_detail = JSON.parse(localStorage.getItem("key_name")) || [];           
            $.each(item_detail, function(index, obj){
                if (key_id == data('key')) {
                    item_detail.splice(index,1);
                    localStorage["key_name"] = JSON.stringify(item_detail);
                    return false;
                }
            });


0

Ось простий код, який очистить локальне зберігання, що зберігається у вашому браузері, за допомогою JavaScript

    <script type="text/javascript">

if(localStorage) { // Check if the localStorage object exists

    localStorage.clear()  //clears the localstorage

} else {

    alert("Sorry, no local storage."); //an alert if localstorage is non-existing
}

</script>

Щоб підтвердити, чи локальне зберігання порожнє, використовуйте цей код:

<script type="text/javascript">

// Check if the localStorage object exists
if(localStorage) {

    alert("Am still here, " + localStorage.getItem("your object name")); //put the object name
} else {
    alert("Sorry, i've been deleted ."); //an alert
}

</script>

якщо він поверне нулеве значення, то ваш локальний сховище буде очищено.


0

У цьому коді ви надаєте список рядків ключів, які ви не хочете видаляти, після чого він фільтрує їх з усіх клавіш у локальному сховищі, а потім видаляє інші.

const allKeys = Object.keys(localStorage);

const toBeDeleted = allKeys.filter(value => {
  return !this.doNotDeleteList.includes(value);
});

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.