繁体   English   中英

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

[英]Delete object from array of multiple objects

我有一个像这样的数组:

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}
]

更新:

原来我的数组在数组中,像这样

控制台日志阵列

您可以使用数组过滤器功能

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

尝试这个

var username = 'son';

for(var i = 0; i < participants.length; i++) {
    if(participants[i].username == username) {
        participants.splice(i, 1);
        i--;
    }
}

注意: filtermap等提供了代码可读性,而for循环则表现更好。 根据您的具体问题进行选择。

您可以使用过滤器方法,也可以使用splice和map:

participants.splice(participants.map(x => x.username).indexOf(username),1);

您可以使用过滤器功能,但过滤器不会更改原始数组; 因此您必须将结果重新分配给原始变量。 参与者= partners.filter((item)=> item.username!==用户名))

暂无
暂无

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

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