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é