tout, c'est ma première question ici, donc j'espère que je la formule correctement et que je fournirai suffisamment d'informations pour travailler.
J'ai une clé dans le stockage local appelée faveGifs, qui contient plusieurs éléments , dont chacun est un objet. Je souhaite pouvoir supprimer ces objets individuellement. Jusqu'à présent, je peux supprimer le premier objet, celui à la position 0. Je veux pouvoir les supprimer à n'importe quel index où ils se trouvent, comme la position 2 par exemple. Je sais que je dois obtenir les index de chacun des objets pour pouvoir y parvenir, cependant, lorsque j'exécute la clé via indexOf (), le seul index que j'obtiens est -1.
Voici comment ma clé de stockage local ressemble:
$(document).on("click", "#remove", function () {
let faveGifs = JSON.parse(localStorage.getItem("faveGifs"));
let faveGif = faveGifs.map(faveGif => faveGif.id);
//Neither of the following has worked for me:
//let index = faveGif.indexOf(faveGif);
//let index = faveGif.indexOf(faveGifs);
console.log(index);
// faveGifs.splice(index, 1);
// localStorage.setItem("faveGifs", JSON.stringify(faveGifs));
// populateFaves();
});
Voici mon code:
faveGifs[
{id: 'jijijoj',rating: 'g'},
{id: 'iojiojoi',rating: 'r'},
{id: 'eawfe',rating: 'pg'},
{id: 'ewfewfwe',rating: 'g'},
{id: 'ewfewfew',rating: 'r'}
];
J'ai essayé d'utiliser des solutions issues de questions similaires, mais aucun d'entre eux n'a fonctionné pour moi. Ceux que j'ai essayés sont:
Supprimer un élément spécifique de localstorage avec js
Supprimer objet json dans le stockage local en utilisant js
Comment supprimer un objet d'un tableau avec JavaScript?
Et plusieurs autres, mais comme je l'ai dit, aucun d'entre eux n'a fonctionné pour moi.
Un grand merci à tous ceux et celles qui m'aident.
3 Réponses :
Pour obtenir l'index de l'élément dans le tableau, vous pouvez utiliser Array.prototype.findIndex ()
Code:
const data = [
{id: 'jijijoj',rating: 'g'},
{id: 'iojiojoi',rating: 'r'},
{id: 'eawfe',rating: 'pg'},
{id: 'ewfewfwe',rating: 'g'},
{id: 'ewfewfew',rating: 'r'}
];
// get index of element with id `iojiojoi`
const index = data.findIndex(item => item.id === 'iojiojoi');
console.log(index);
Le problème est que faveGif est toujours un tableau - il ressemblerait à ceci:
let faveGifs = [{
id: 'jijijoj',
rating: 'g'
}, {
id: 'iojiojoi',
rating: 'r'
}, {
id: 'eawfe',
rating: 'pg'
}, {
id: 'ewfewfwe',
rating: 'g'
}, {
id: 'ewfewfew',
rating: 'r'
}];
let faveGif = faveGifs.map(faveGif => faveGif.id);
let index = faveGif.findIndex(id => id == "ewfewfew");
console.log(index); //Should return 4 Donc, si vous voulez trouver l'index d'un certain ID ( disons ewfewfew):
let index = faveGif.findIndex(id => id == "ewfewfew");
Ce serait le même index que dans faveGifs , donc cela vous donnerait le résultat requis.
Démonstration:
faveGif = ['jijijoj', 'iojiojoi', 'eawfe', 'ewfewfwe', 'ewfewfew'];
Je pense que ce qui se passe, c'est que vous essayez d'analyser une chaîne, comme si c'était JSON.
Consultez ce post: Stockage d'objets dans HTML5 localStorage . Le PO tentait de résoudre un problème similaire.