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
3 Réponses :
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>
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.
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é