Menghapus localStorage dalam javascript?

746

Apakah ada cara untuk mengatur ulang / menghapus localStorage browser di javascript?

Bnicholas
sumber

Jawaban:

1371

Gunakan ini untuk menghapus penyimpanan lokal:

localStorage.clear();
Pesawat Digital
sumber
6
@ BakedInhalf sama sekali tidak. Mungkin aplikasi Anda mengaturnya lagi?
destan
5
Saya memanggil localStorage.clear () ketika aplikasi saya mulai, tetapi bahkan jika saya menutup browser, menghapus cache, dll., Data masih ada di sana. Saya tahu ini karena saya telah menetapkan properti "instance" pada model saya ke angka acak pada inisialisasi, dan, untuk id yang diberikan, properti instance selalu sama.
sydneyos
11
@ digital-plane Apakah ini akan menghapus penyimpanan lokal dari domain tertentu atau semua penyimpanan?
crisron
18
clear()akan menghapus semua kunci dan nilai Penyimpanan lokal dari domain spesifik tempat Anda berada. Javascript tidak dapat memperoleh nilai localStorage dari domain lain apa pun karena CORS.
Fizzix
1
@ BakedInhalf benar, tetap sampai Anda sulit menyegarkan halaman. Ketika Anda menghapus penyimpanan lokal dan mengisinya tepat setelah itu, itu semacam mengembalikan konten sebelumnya dan menambahkan Anda item baru untuk itu. Ketika Anda menghapus Penyimpanan lokal dan melakukan hardrefresh, itu kosong dan Anda dapat mulai mengisinya lagi.
Cyber
198

Jika Anda ingin menghapus Item atau variabel tertentu dari penyimpanan lokal pengguna, Anda dapat menggunakan

localStorage.removeItem("name of localStorage variable you want to remove");
Ajeet Lakhani
sumber
1
Hai, @Ajeet Jika saya tidak ingin menghapus untuk item tertentu maka apakah ada cara untuk melakukannya juga? Misalnya 'removeItemNotIn (kunci)', 'hapus semua kecuali kunci yang ditentukan'? Terima kasih sebelumnya.
Me_developer
Hai, @ Bayangan Jika saya tidak ingin menghapus item tertentu, apakah ada cara untuk melakukannya juga? Misalnya 'removeItemNotIn (kunci)', 'hapus semua kecuali kunci yang ditentukan'? Terima kasih sebelumnya.
Me_developer
Saya menemukan solusi untuk masalah saya: - if (localStorage.getItem (particularKey) == null) {localStorage.clear (); } Tetapi jika Anda memiliki solusi yang lebih baik maka beri tahu saya. Terima kasih.
Me_developer
1
@learner Jadi Anda ingin menghapus semua kunci kecuali tombol tertentu , bukan? Untuk itu Anda bisa melakukan hal seperti ini var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani
1
Juga memungkinkan: mendapatkan nilai, menghapus dan mengatur nilai lagi, lebih fleksibel. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.
112
window.localStorage.clear(); //try this to clear all local storage
Naftali alias Neal
sumber
11

Berikut adalah fungsi yang akan memungkinkan Anda untuk menghapus semua item Penyimpanan lokal dengan pengecualian. Anda membutuhkan jQuery untuk fungsi ini. Anda dapat mengunduh intinya .

Anda bisa menyebutnya seperti ini

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);
    }
  }
};
Christian Juth
sumber
1
Yang aneh adalah itu undefinedadalah kunci yang valid untuk setItemdangetItem
ebob
@ Bob Ya, mungkin terlihat aneh, tapi tidak, sebenarnya tidak. fungsi localStorage dengan cara yang mirip dengan objek di mana kunci dikonversi ke string. Misalnya, menggunakan undefined sebagai kunci seperti ini localStorage.setItem(undefined, 'example Txt!'):, akan menyimpannya di bawah kunci yang disebut 'undefined'seperti yang Anda lihat ketika Anda menjalankan kode berikut. console.log(localStorage.getItem('undefined')) akan menampilkan example Txt!.
Jack Giffin
8

Penyimpanan lokal terlampir di global window. Ketika kami mencatat penyimpanan lokal di devtools krom, kami melihat bahwa ia memiliki API berikut:

masukkan deskripsi gambar di sini

Kami dapat menggunakan API berikut untuk menghapus item:

  1. localStorage.clear(): Menghapus seluruh penyimpanan lokal
  2. localStorage.removeItem('myItem'): Untuk menghapus item individual
Willem van der Veen
sumber
4

Hal pertama yang pertama, Anda perlu memeriksa untuk memastikan bahwa localStorage diaktifkan. Saya akan merekomendasikan melakukannya seperti ini:

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

Ya, Anda dapat (dalam beberapa kasus) hanya memeriksa untuk melihat apakah localStorage adalah anggota objek jendela. Namun, ada opsi iframe sandboxing (antara lain) yang akan memberikan pengecualian jika Anda bahkan mencoba mengakses indeks 'localStorage'. Jadi, untuk alasan praktik terbaik, ini adalah cara terbaik untuk memeriksa untuk melihat apakah penyimpanan lokal diaktifkan. Kemudian, Anda bisa menghapus penyimpanan lokal seperti itu.

if (localStorageEnabled) localStorage.clear();

Misalnya, Anda bisa menghapus penyimpanan lokal setelah kesalahan terjadi di browser webkit seperti itu.

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

Dalam contoh di atas, Anda memerlukan .bind(window)karena tanpa itu, localStorage.clearfungsi akan berjalan dalam konteks windowobjek, bukan localStorageobjek yang membuatnya gagal. Untuk menunjukkan ini, lihat contoh di bawah ini:

window.onerror = localStorage.clear;

sama dengan:

window.onerror = function(){
    localStorage.clear.call(window);
}
Jack Giffin
sumber
3

Jika Anda ingin menghapus semua item yang Anda simpan di Penyimpanan lokal maka

localStorage.clear();

Gunakan ini untuk menghapus semua kunci yang disimpan.

Jika Anda ingin menghapus / hanya menghapus kunci / nilai tertentu maka Anda dapat menggunakan removeItem (kunci) .

localStorage.removeItem('yourKey');
Moshiur Rahman
sumber
2
localStorage.clear();

atau

window.localStorage.clear();

untuk menghapus item tertentu

window.localStorage.removeItem("item_name");

Untuk menghapus nilai tertentu dengan 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;
                }
            });
vino
sumber
1

Untuk menghapus sessionStorage

sessionStorage.clear();
m-farhan
sumber
0

Berikut adalah kode sederhana yang akan menghapus penyimpanan lokal yang disimpan di browser Anda dengan menggunakan 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>

Untuk mengkonfirmasi apakah penyimpanan lokal kosong gunakan kode ini:

<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>

jika mengembalikan nol maka penyimpanan lokal Anda dihapus.

amaroko
sumber
0

Kode ini di sini Anda memberikan daftar string yang tidak ingin Anda hapus, lalu memfilternya dari semua kunci di penyimpanan lokal kemudian menghapus yang lain.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Joseph Moore
sumber