首页 > 解决方案 > 根据值删除数组内的对象

问题描述

如果对象的值与条件匹配,我想问如何删除数组中的元素。

例如:

[
    {
        "id": 1, 
        "sender": "a", 
        "receiver": "b"
        }, 
    {
        "id": 2, 
        "sender": "b", 
        "receiver": "c"
    }
    {
        "id": 3, 
        "sender": "a", 
        "receiver": "c"
    }
]

如果发送者和/或接收者的值为“a”,我想删除该元素,在本例中为 ids 1 和 3。我该怎么做?我已经阅读了关于 splice 的内容,并且我尝试了 for 循环,但无法完成我想要的。

这是我尝试过的:

  for (let index = 0; index < arr.length; index++) {
    if (arr[index].sender == "a") {
      arr.splice(index.sender, 1);
    }
    if(arr[index].receiver == "a") {
      arr.splice(index.receiver, 1);
    }
  }

尽管如此,数组中的对象仍然没有被删除。

标签: javascript

解决方案


您可以使用过滤器方法更轻松地完成此操作。你像这样使用它:

   let array = [
  {
    id: 1,
    sender: 'a',
    receiver: 'b'
  },
  {
    id: 2,
    sender: 'b',
    receiver: 'c'
  },
  {
    id: 3,
    sender: 'a',
    receiver: 'c'
  }
];

// filter with one condition i.e either sender or receiver
let modifiedArray = array.filter(function(item) {
  return item.sender !== 'b';
});
console.log(modifiedArray);

// Filter with both conditions i.e sender and receiver is checked
let mod_array = array.filter(function(item) {
  if (item.sender !== 'a' && item.receiver !== 'a') {
    return item;
  }
});

console.log(mod_array);

    

推荐阅读