开发者问题收集

尝试循环和过滤数组时获取未定义的结果

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个回答

您可以为此使用 flatMapforEach 始终返回 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