如何从对象数组中删除一个项目?

7
    var arr = [
                     {id:2,date:'2010-10-03',des:'goodday'},
                     {id:3,date:'2011-02-13',des:'badday'},
                     {id:4,date:'2011-04-03',des:'niceday'}
                   ];

现在我想要删除 {id:3,date:'2011-02-13',des:'badday'} ,然后数组应该是这样的

        var arr = [
                     {id:2,date:'2010-10-03',des:'goodday'},
                     {id:4,date:'2011-04-03',des:'niceday'}
                   ];

我该怎么做?

3个回答

15

假设您的对象中id字段是唯一的,您可以使用以下方法进行删除。使用的函数是Splice

    var arr = [
        {
        id: 2,
        date: '2010-10-03',
        des: 'goodday'},
    {
        id: 3,
        date: '2011-02-13',
        des: 'badday'},
    {
        id: 4,
        date: '2011-04-03',
        des: 'niceday'}
    ];

    for(var i=0; i<arr.length; i++){
        if(arr[i].id == 3){
            arr.splice(i, 1);  //removes 1 element at position i 
            break;
        }
    }

console.log(arr);  
//should give you 
//                      var arr = [
//                               {id:2,date:'2010-10-03',des:'goodday'},
//                               {id:4,date:'2011-04-03',des:'niceday'}
//                          ];

1

这是不可能的,因为你标记为解决方案的答案使用了splice方法。 - cwharris
1
Splice是正确的,但indexOf在我的情况下无法工作。这不是完整的答案。 - Cynial

0

arr.splice(1,1);会移除arr[1]处的对象, 并且arr[2]会顶替它的位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接