尝试获取本地存储中对象的索引,以便我可以使用javascript或jquery从localStorage存储中删除/删除该对象

时间:2019-03-07 03:50:47

标签: javascript jquery arrays json object

全部,这是我在这里的第一个问题,所以我希望我的措词正确无误,并提供足够的信息以供使用。

我在本地存储中有一个名为faveGifs的密钥,该密钥中存储了多个项目,每个项目都是一个对象。我希望能够分别删除这些对象。到目前为止,我可以删除第一个对象,即位置0处的对象。我希望能够删除它们所在的索引处的对象,例如位置2。我知道我必须获取每个对象的索引才能实现此目的,但是,当我通过indexOf()运行键时,唯一获得的索引是-1。

这是我的本地存储密钥的外观:

faveGifs[
  {id: 'jijijoj',rating: 'g'}, 
  {id: 'iojiojoi',rating: 'r'}, 
  {id: 'eawfe',rating: 'pg'}, 
  {id: 'ewfewfwe',rating: 'g'}, 
  {id: 'ewfewfew',rating: 'r'}
];

这是我的代码:

$(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();
});

我尝试使用类似问题的解决方案,但没有一个对我有用。我尝试过的是:

Remove a specific item from localstorage with js

Remove json object in localstorage using js

How do I remove an object from an array with JavaScript?

还有其他几个人,但是就像我说的那样,没有一个人为我工作。

非常感谢任何帮助我的人。

3 个答案:

答案 0 :(得分:1)

问题在于faveGif仍然是一个数组-看起来像这样:

faveGif = ['jijijoj', 'iojiojoi', 'eawfe', 'ewfewfwe', 'ewfewfew'];

因此,如果您要查找某个ID的索引(例如ewfewfew):

let index = faveGif.findIndex(id => id == "ewfewfew");

这将与faveGifs中的索引相同,因此它将为您提供所需的结果。

演示:

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

答案 1 :(得分:0)

要获取数组中元素的索引,可以使用Array.prototype.findIndex()

代码:

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

答案 2 :(得分:0)

我相信这是您正在尝试解析一个字符串,就好像它是JSON。

查看此信息:Storing Objects in HTML5 localStorage。 OP正在尝试解决类似的问题。