Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js/array | array.将带有过滤器的对象推送到forEach循环中_Javascript_Arrays_Node.js - Fatal编程技术网

Javascript js/array | array.将带有过滤器的对象推送到forEach循环中

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

我试图将一些在key:value对上过滤的唯一对象推入数组。假设我有一个包含2个组id的数组:

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快