Cancellare localStorage in javascript?


Risposte:


1371

Usa questo per cancellare localStorage:

localStorage.clear();

6
@BakedInhalf per niente. Forse la tua app la reimposta di nuovo?
destan

5
Chiamo localStorage.clear () all'avvio della mia app, ma anche se chiudo il browser, svuoto la cache, ecc., I dati sono ancora lì. Lo so perché ho impostato una proprietà "istanza" sul mio modello su un numero casuale al momento dell'inizializzazione e, per un dato ID, la proprietà dell'istanza è sempre la stessa.
Sydney,

11
@ digital-plane Questo eliminerà l'archiviazione locale da un dominio specifico o da tutto l'archiviazione?
crisron,

18
clear()rimuoverà tutte le chiavi e i valori localStorage dal dominio specifico in cui ti trovi. Javascript non è in grado di ottenere i valori localStorage da altri domini a causa di CORS.
Fizzix,

1
@BakedInhalf ha ragione, rimane fino a quando non si aggiorna la pagina. Quando cancelli il tuo archivio locale e lo riempi subito dopo, ripristina il contenuto precedente e ti aggiunge un nuovo elemento. Quando cancelli il tuo archivio locale e fai un hardrefresh, è vuoto e puoi ricominciare a riempirlo.
Cyber

198

Se si desidera rimuovere un elemento o una variabile specifici dalla memoria locale dell'utente, è possibile utilizzare

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

1
Ciao, @Ajeet Se non desidero rimuovere un determinato elemento, esiste un modo per farlo? Ad esempio 'removeItemNotIn (key)', 'remove all tranne una chiave definita'? Grazie in anticipo.
Me_developer,

Ciao, @Shadow Se non desidero rimuovere un determinato elemento, esiste un modo per farlo? Ad esempio 'removeItemNotIn (key)', 'remove all tranne una chiave definita'? Grazie in anticipo.
Me_developer,

Ho trovato una soluzione al mio problema: - if (localStorage.getItem (particularKey) == null) {localStorage.clear (); } Ma se hai una soluzione migliore, fammelo sapere. Grazie.
Me_developer,

1
@learner Quindi vuoi rimuovere tutte le chiavi tranne una chiave particolare , giusto? Per questo puoi fare qualcosa del genere var key; for (var i = 0; i < localStorage.length; i++) { key = localStorage.key(i); if(key != particularKey){ localStorage.removeItem(key); } }
Ajeet Lakhani,

1
Inoltre possibile: ottenere il valore, cancellare e reimpostare il valore, più versatile. let tmp = localStorage.getItem('<your-name>'); localStorage.clear(); localStorage.setItem('<your-name>')
Michael B.


11

Ecco una funzione che ti permetterà di rimuovere tutti gli oggetti localStorage con eccezioni. Sarà necessario jQuery per questa funzione. Puoi scaricare l'essenza .

Puoi chiamarlo così

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
La cosa strana è che undefinedè una chiave valida per setItemegetItem
ebob il

Sì, può sembrare strano, ma no, in realtà non lo è. localStorage funziona in modo simile agli oggetti in quanto le chiavi vengono convertite in stringhe. Ad esempio, l'utilizzo di undefined come chiave come questo localStorage.setItem(undefined, 'example Txt!'):, lo memorizzerà sotto la chiave chiamata 'undefined'come si può vedere quando si esegue il codice seguente. console.log(localStorage.getItem('undefined')) uscirà example Txt!.
Jack Giffin,

8

Localstorage è allegato al globale window. Quando registriamo localstorage nei devtools di Chrome, vediamo che ha le seguenti API:

inserisci qui la descrizione dell'immagine

Possiamo usare le seguenti API per eliminare elementi:

  1. localStorage.clear(): Cancella l'intero archivio locale
  2. localStorage.removeItem('myItem'): Per rimuovere singoli elementi

4

Per prima cosa, è necessario verificare per assicurarsi che localStorage sia abilitato. Consiglierei di farlo in questo modo:

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

Sì, puoi (in alcuni casi) semplicemente verificare se localStorage è un membro dell'oggetto window. Tuttavia, ci sono opzioni di sandboxing iframe (tra le altre cose) che genereranno un'eccezione se si tenta anche di accedere all'indice "localStorage". Pertanto, per motivi di buone pratiche, questo è il modo migliore per verificare se localStorage è abilitato. Quindi, puoi semplicemente cancellare localStorage in questo modo.

if (localStorageEnabled) localStorage.clear();

Ad esempio, è possibile cancellare localStorage dopo che si è verificato un errore nei browser Webkit in questo modo.

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

Nell'esempio sopra, è necessario il .bind(window)perché senza di essa, la localStorage.clearfunzione verrà eseguita nel contesto windowdell'oggetto, invece che l' localStorageoggetto lo fa fallire silenziosamente. Per dimostrarlo, guarda l'esempio seguente:

window.onerror = localStorage.clear;

equivale a:

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

3

Quindi, se si desidera cancellare tutti gli elementi memorizzati in localStorage

localStorage.clear();

Utilizzare questo per cancellare tutta la chiave memorizzata.

Se si desidera cancellare / rimuovere solo chiave / valore specifici, è possibile utilizzare removeItem (chiave) .

localStorage.removeItem('yourKey');

2
localStorage.clear();

o

window.localStorage.clear();

per cancellare un elemento particolare

window.localStorage.removeItem("item_name");

Per rimuovere un valore particolare per 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;
                }
            });

1

Per cancellare sessionStorage

sessionStorage.clear();

0

Ecco un semplice codice che cancellerà il deposito locale memorizzato nel tuo browser usando 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>

Per confermare se localstorage è vuoto utilizzare questo codice:

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

se restituisce null, il tuo archivio locale viene cancellato.


0

Questo codice qui fornisce un elenco di stringhe di chiavi che non si desidera eliminare, quindi filtra quelle da tutte le chiavi nella memoria locale e quindi elimina le altre.

const allKeys = Object.keys(localStorage);

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

toBeDeleted.forEach(value => {
  localStorage.removeItem(value);
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.