【问题标题】:Remove items from array -by value not working with jQuery从数组中删除项目 - 按值不适用于 jQuery
【发布时间】:2016-10-05 19:34:55
【问题描述】:

我被困在一个简单的事情上,即从 JavaScript 中的数组中删除一个项目(对象)。我也在使用 jQuery。

我正在尝试构建 RSS 提要,为此我将书签/收藏夹功能存储在 localStorage 中。当用户分别点击glyphicon-starglyphicon-star-empty 时,我需要从loalStorage array 添加/删除项目。

我面临的问题是取消收藏某个项目。即:从数组中删除对象。用户可以点击任何喜欢的项目(随机顺序)来取消收藏。为此,我需要按值从localstorage 中删除相应的项目,因为索引可能并不总是已知的。我确实使用grep 搜索了一个有效的解决方案并在我的代码中实现,但它似乎对我不起作用。

这是我发现并实现的,但它不起作用:

$(document).on('click', '.glyphicon-star', function(){
   var y = arr;
   var removeItem = obj;
   arr = $.grep(arr, function(value) {
       return value != obj;
  });
 localStorage.favorite = JSON.stringify(arr);
 console.log(arr);
for (i=0; i<arr.length; i++)
{
   console.log(arr[i]);
}
});

这里是工作:Fiddle

【问题讨论】:

    标签: javascript jquery arrays local-storage


    【解决方案1】:

    对象比较有点难以实现,请查看这篇文章以获取信息和示例:LINK

    您可以将该函数添加到您的代码中并编辑您的$.grep,如下所示:

    arr = $.grep(arr, function(value) {
        return isEquivalent(value, obj) === false;
    });
    

    Fiddle here

    【讨论】:

      【解决方案2】:

      修复你的小提琴

        arr = $.grep(arr, function(value) {
              return JSON.stringify(value) != JSON.stringify(obj);
                  localStorage.favorite = JSON.stringify(arr);
                  console.log(arr);
              });
      

      演示here

      【讨论】:

      • 它工作得很好,但是当我添加进一步的实现,即查看书签(点击'RSS'附近的.glyphicon-bookmark)时,它不会在点击.glyphicon-star时从那里删除元素..这里是是小提琴:jsfiddle.net/1nbxfg8d/1
      • 你好,一个温柔的请求,如果你能帮忙:(
      • 问题出在 createObj 函数中
      • 函数 createObj(selectedClass) { var $this = selectedClass; obj = { title: $($this).closest('.data-title').find(".panel-heading").text(), con: $($this).closest('.data-title ').next('.data-content').html() } //console.log(obj.title); }
      猜你喜欢
      • 2019-10-03
      • 2012-02-11
      • 1970-01-01
      • 2011-04-26
      • 2017-09-13
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多