1
votes

LocalStorage supprime l'élément de l'objet à l'aide de JavaScript

Je voudrais supprimer un élément de l'objet localstorage:

/*** getID is the items clicked ***/

var retrievedData = localStorage.getItem("addToFavs");
    
    var parseData = jQuery.parseJSON(retrievedData);

    $.each(parseData, function(x,y){
        if(y['fav-name'] == getID){
            console.log(getID+' found on '+x);
            console.log(parseData[x]);
            localStorage.removeItem(parseData[x]);
            console.log(x+' removed');
        } else {
            console.log(getID+' NOT NOT found on '+x);
        }

}); // end $.each

J'ai stocké les informations, puis j'ai vérifié si l'élément trouvé, je devrais le supprimer:

addToFavs: [{"fav-name":"fav-787336"},{"fav-name":"fav-255890"}]

Merci d'avance


2 commentaires

Utilisez Array.prototype.filter () < / code>


Comment puis-je l'implémenter dans mon code? J'ai essayé tant de façons mais j'ai échoué


3 Réponses :


2
votes

Vous ne pouvez pas faire ceci:

var jsonString = localStorage.getItem("addToFavs");
var arr = JSON.parse(jsonString);
// Filter to keep only those with a different ID than getID
arr = arr.filter(function(item) { return item['fav-name'] !== getID; });
// Store it back, stringified
localStorage.setItem("addToFavs", JSON.stringify(arr));

Vous devez soit mettre à jour le tableau que vous avez analysé, soit en créer un nouveau, puis le stringify le remettre en JSON et setItem pour mettre à jour la valeur dans localStorage. Parce que localStorage ne peut stocker que des chaînes, pas des tableaux ou des objets.

filter serait une bonne façon de le faire:

localStorage.removeItem(parseData[x]);

p>


0 commentaires

1
votes
  1. La valeur du stockage local est une chaîne
  2. Lire la valeur de stockage local par la clé
  3. Décoder la valeur de la chaîne
  4. Appliquez la fonction Array.prototype.filter pour filtrer la valeur hors du tableau
  5. Encoder la valeur du tableau
  6. Écrivez-le dans le stockage local en utilisant la même clé

0 commentaires

0
votes

Ne pas vous effrayer ou quelque chose

addToFavs: [{"fav-name": "fav-787336"}, {"fav-name": "fav-255890"}] code >. addToFavs est l'élément dans le stockage local et non l'objet que vous avez stocké.

et le stockage local ne prend en charge que le stockage de type string: string comme item: value, donc

localStorage.removeItem (parseData [x]);

qui est en fait à l'intérieur de votre objet stringifié qui est lui-même la valeur de l'élément addToFavs ,

donc vous devez supprimer l'élément de l'objet et stocker le addToFavs comme illustré ci-dessous.

var ls = window.localStorage;
ls.setItem('addToFavs', '[{"fav-name":"fav-787336"},{"fav-name":"fav-255890"}]');

var getId = 'fav-787336';

var item = JSON.parse(ls.getItem('addToFavs'));

var updatedItems = item.filter(val => (val['fav-name'] === getId));

console.log(updatedItems);

//update loacl storage again

ls.setItem('addToFavs', JSON.stringify(updatedItems))

le code ne fonctionnera pas car l'accès localStorage n'est pas accordé en raison de problèmes de sécurité, n'hésitez pas à exécuter le code dans la console du navigateur.


0 commentaires