[英]Delete object from array of multiple objects
I have an array like: 我有一个像这样的数组:
var participants = [
{username: "john", time: null},
{username: "samira", time: null},
{username: "mike", time: null},
{username: "son", time:null}
]
I want to remove an item by username: 我想通过用户名删除项目:
const index = participants.map(x => {
x.map(y => {
return y.username;
})
}).indexOf(username); //get index of username
participants.splice(index, 1);
Hence, index of username returns "-1", therefore participants array becomes 0? 因此,用户名的索引返回“ -1”,因此参与者数组变为0?
Expected output, by username: 'son': 预期的输出,按用户名:“ son”:
[
{username: "john", time: null},
{username: "samira", time: null},
{username: "mike", time: null}
]
UPDATE: 更新:
Turns out my array is within an array, like this 原来我的数组在数组中,像这样
您可以使用数组过滤器功能
participants.filter((item) => item.username !== username))
try this 尝试这个
var username = 'son';
for(var i = 0; i < participants.length; i++) {
if(participants[i].username == username) {
participants.splice(i, 1);
i--;
}
}
NOTE: filter
, map
and the like offer code readability while for
loops are better performing. 注意:
filter
, map
等提供了代码可读性,而for
循环则表现更好。 Choose according to your specific problem. 根据您的具体问题进行选择。
您可以使用过滤器方法,也可以使用splice和map:
participants.splice(participants.map(x => x.username).indexOf(username),1);
You can use filter function, but filter doesn't change the original array; 您可以使用过滤器功能,但过滤器不会更改原始数组; so you have to reassign results to the original variable.
因此您必须将结果重新分配给原始变量。 participants = participants.filter((item) => item.username !== username))
参与者= partners.filter((item)=> item.username!==用户名))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.