从javascript数组中删除对象?

Remove object from a JavaScript Array?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Remove specific element from a javascript array?

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

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

现在,您要删除有价值的元素url"link 2",然后删除唯一的数组,如下所示:

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

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


你可以做一个过滤器。

1
2
3
4
5
6
7
8
9
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中实现的,如果要支持旧的浏览器,可以编写自己的浏览器。


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

1
arr.splice(1, 1);

如果要在不知道基于元素属性的索引的情况下删除数组的元素,则必须对数组和每个元素的每个属性进行迭代:

1
2
3
4
5
6
7
8
9
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;
        }
    }
}