开发者问题收集

从多个对象数组中删除对象

2019-01-28
144

我有一个类似这样的数组:

var participants = [
  {username: "john", time: null}, 
  {username: "samira", time: null}, 
  {username: "mike", time: null}, 
  {username: "son", time:null}
]

我想按用户名删除一个项目:

const index = participants.map(x => {

  x.map(y => {
      return y.username;
    })
  }).indexOf(username); //get index of username

participants.splice(index, 1);

因此,用户名的索引返回“-1”,因此参与者数组变为 0?

预期输出,按用户名:“son”:

[
  {username: "john", time: null}, 
  {username: "samira", time: null}, 
  {username: "mike", time: null}
]

更新:

结果发现我的数组在一个数组内,就像这样

Console log array

3个回答

您可以使用数组过滤函数

participants.filter((item) => item.username !== username))

Grissom
2019-01-28

您可以使用 filter 方法或以自己的方式使用 splice 和 map :

participants.splice(participants.map(x => x.username).indexOf(username),1);
OriEng
2019-01-28

您可以使用过滤函数,但过滤不会改变原始数组;因此您必须将结果重新分配给原始变量。 participants =Participants.filter((item) => item.username !== username))

Nimer Awad
2019-01-28