尝试循环和过滤数组时获取未定义的结果
2022-02-27
1155
我目前正在使用 nodejs 中的对象和数组以及过滤器。我目前面临的困难是弄清楚如何正确遍历对象并过滤所需的结果。相反,我得到的是
undefined
。我有一个对象
users
,我想过滤每个具有
active === true
的用户配置,然后最终在最终结果中使用该过滤器显示每个用户配置。解决这个问题的正确/最佳方法是什么?我应该使用
map
吗?
当前结果:
undefined
期望结果:
[
{
email: '[email protected]',
active: true
},
{
email: '[email protected]',
active: true
},
{
email: '[email protected]',
active: true
}
]
代码:
const users = [
{
name: 'User1',
configuration: [
{
email: '[email protected]',
active: true
},
{
email: '[email protected]',
active: false
}
],
},
{
name: 'User2',
configuration: [
{
email: '[email protected]',
active: true
},
{
email: '[email protected]',
active: true
}
],
},
];
const result = users.forEach(user => user.configuration.filter( x => {
let {
active
} = x;
return active === true;
}));
console.log(result);
2个回答
您可以为此使用
flatMap
。
forEach
始终返回
undefined
。通常,如果您想返回某个数组,请使用
map
,但由于
filter
也返回一个数组,因此您需要将其展平以获得所需的结果,因此使用
flatMap
const users = [{name: 'User1',configuration: [ {email: '[email protected]',active: true},{email: '[email protected]',active: false}],},{name: 'User2',configuration: [ {email: '[email protected]',active: true},{email: '[email protected]',active: true}],},];
const result = users.flatMap(user => user.configuration.filter( x => x.active===true));
console.log(result);
cmgchess
2022-02-27
const users = [
{
name: "User1",
configuration: [
{
email: "[email protected]",
active: true
},
{
email: "[email protected]",
active: false
}
]
},
{
name: "User2",
configuration: [
{
email: "[email protected]",
active: true
},
{
email: "[email protected]",
active: true
}
]
}
];
let result =[];
users.forEach((user) =>
user.configuration.forEach((x) => {
if (x.active) {
result.push(x)
}
})
);
console.log(result);
Youssouf Oumar
2022-02-27