【问题标题】:Remove object from array knowing its id [duplicate]从数组中删除对象,知道它的 id [重复]
【发布时间】:2016-03-24 01:00:36
【问题描述】:

我有一个对象数组:

var myArr;

假设在页面加载时它包含 10 个具有以下结构的对象:

{
  Id: …,
  Name: …
}

如何通过IdmyArr 中删除对象?

【问题讨论】:

  • 在数组中找到具有该 id 的对象的索引并将其从数组中删除

标签: javascript arrays


【解决方案1】:

你可以试试

newArray = myArr
  .filter(function(element) {
    return element.id !== thisId;
  });

【讨论】:

    【解决方案2】:

    这样试试

    var id = 2;
    var list = [{
      Id: 1,
      Name: 'a'
    }, {
      Id: 2,
      Name: 'b'
    }, {
      Id: 3,
      Name: 'c'
    }];
    var index = list.map(x => {
      return x.Id;
    }).indexOf(id);
    
    list.splice(index, 1);
    console.log(list);
    

    JSFIDDLE

    或者你可以使用.filter()

    这样

    var id = 2;
    var list = [{
      Id: 1,
      Name: 'a'
    }, {
      Id: 2,
      Name: 'b'
    }, {
      Id: 3,
      Name: 'c'
    }];
    var lists = list.filter(x => {
      return x.Id != id;
    })
    console.log(lists);
    

    DEMO

    【讨论】:

      【解决方案3】:

      两种解决方案,一种是创建新实例,另一种是更改数组的实例。

      过滤器:

      idToRemove = DESIRED_ID;
      
      myArr = myArr.filter(function(item) {
          return item.Id != idToRemove;
      });
      

      如您所见,filter 方法返回过滤后数组的新实例。

      第二种选择是找到该项目的索引,然后用splice将其删除:

      idToRemove = DESIRED_ID;
      
      index = myArr.map(function(item) {
          return item.Id
      }).indexOf(idToRemove);
      
      myArr.splice(index, 1);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-01
        • 2021-06-29
        • 2017-04-10
        • 2016-03-12
        相关资源
        最近更新 更多