繁体   English   中英

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

[英]How to delete an item from array of objects?

    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'} ,然后arr应该是

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

我应该怎么做?

假设您对象中的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'}
//                          ];

您可以使用filter方法实现相同的目的:

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

// Array with the values to be removed, here I have taken the id
var oArrToRemove = [2] 

// Using filter method to delete the object
var oNewArr = arr.filter(ele => { return remArr.indexOf(ele.id) === -1})

// The oNewArray will be as follows
oNewArr = [
    {id:3,date:'2011-02-13',des:'badday'},
    {id:4,date:'2011-04-03',des:'niceday'}
];

arr.splice(1,1); 将删除arr[1]处的对象,并且arr[2]将滑入其位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM