Javascript js/array | array.将带有过滤器的对象推送到forEach循环中
我试图将一些在key:value对上过滤的唯一对象推入数组。假设我有一个包含2个组id的数组:Javascript js/array | array.将带有过滤器的对象推送到forEach循环中,javascript,arrays,node.js,Javascript,Arrays,Node.js,我试图将一些在key:value对上过滤的唯一对象推入数组。假设我有一个包含2个组id的数组: let groups = [100,200]; 我正在尝试获取这些组的用户列表(id和名称)。和过滤器,以仅在名为membersRoles的对象的输出数组中推送具有唯一id值的对象 let membersList = []; groups.forEach(group => { x.groupParts.get(group).members.forEach(user => memb
let groups = [100,200];
我正在尝试获取这些组的用户列表(id和名称)。和过滤器,以仅在名为membersRoles的对象的输出数组中推送具有唯一id值的对象
let membersList = [];
groups.forEach(group => {
x.groupParts.get(group).members.forEach(user => membersList.push({
id: user.id,
name: user.username
}));
});
我知道我需要使用:
filter((value, index, self) => self.indexOf(value) === index)
但是我不知道在哪里可以添加这个。任何帮助都非常感谢:)在
forEach()
循环完成后,您必须执行filter()
。但是它必须使用.find()
而不是indexOf()
,因为您只是测试一个特定的属性,而不是对象相等性
但在推之前,只测试id值是否已经在结果列表中更简单
let membersList=[];
groups.forEach(组=>{
x、 groupParts.get(group.members.forEach)(用户=>{
如果(!membersList.find(({id})=>id==user.id)){
会员名单({
id:user.id,
名称:user.username
});
}
});
});
每当写入for
循环并按下push
时,小猫就会哭。使用或您可以使用map函数而不是使用foreach循环,并且大多数情况下,您可以在循环结束后的任何位置使用filter
方法。如果您可以为x和x.groupParts提供一些测试数据,那就太好了。现在很难确定您真正想要实现的目标。我用map()@HereticMonkey替换了forEach,并了解到map比forEach快