【问题标题】:Remove object from a JavaScript Array? [duplicate]从 JavaScript 数组中删除对象? [复制]
【发布时间】:2012-06-17 02:14:53
【问题描述】:

可能重复:
Remove specific element from a javascript array?

具体来说我有一个数组如下:

var arr = [
    {url: 'link 1'},
    {url: 'link 2'},
    {url: 'link 3'}
];

现在您要删除有价值的元素 url “链接 2”,并在删除唯一的数组后如下:

arr = [
    {url: 'link 1'},
    {url: 'link 3'}
];

那么谁能帮我解决这个问题呢?非常感谢

【问题讨论】:

  • 我不认为这是该问题的直接重复。在另一个问题中,仅使用原始值。 indexOf在这里工作。因此,除非索引(总是)已知,否则splice 会丢失一些难题...
  • 这个问题我已经看过很多次了。
  • arr.filter(function(element){ return(element.url === 'link 2'? false :true); })
  • var arr = [ {url: "link 1"}, {url: "link 2"}, {url: "link 3"} ]; arr = arr.filter(function(el){ return el.url !== "link 2"; });

标签: javascript arrays object


【解决方案1】:

你可以做一个过滤器。

var arr = [
  {url: "link 1"},
  {url: "link 2"},
  {url: "link 3"}
];

arr = arr.filter(function(el){
  return el.url !== "link 2";
});

PS: Array.filter 方法是在 JavaScript 1.6 中实现的,大多数现代浏览器都支持,如果要支持旧浏览器,您可以自己编写一个。

【讨论】:

  • 请包括要求...不是每个人都这么幸运拥有这样的功能(没有垫片)。
  • 完美,帮我分配!
【解决方案2】:

使用拼接函数删除数组中的元素:

arr.splice(1, 1);

如果您想在不知道基于元素属性的索引的情况下删除数组的元素,则必须遍历数组和每个元素的每个属性:

for(var a = 0; a < arr.length; a++) {
    for(var b in arr[a]) {
        if(arr[a][b] === 'link 2') {
            arr.splice(a, 1);
            a--;
            break;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2018-06-19
    • 2014-06-25
    • 2020-10-25
    • 2016-05-19
    • 1970-01-01
    相关资源
    最近更新 更多