如何在JavaScript中使用多个条件进行数组过滤?

时间:2018-10-19 12:57:30

标签: javascript

例如,我的具有用户状态的数组过滤器为true,所以我得到了完美的结果,但是我想要的是用户名和用户ID,而不是响应中的其他字段。

 let users=[{
    id:1,
    name:'Zen',
    age:21,
    status:true
    },{
    id:2,
    name:'Roy',
    age:29,
    status:false
    },{
    id:3,
    name:'Zohn',
    age:41,
    status:true
    }]

let result =users.filter(({status,age})=>status===true);
console.log('result',result);


result get is 

[{
   id:1,
    name:'Zen',
    age:21,
    status:true
    },{
    id:3,
    name:'Zohn',
    age:41,
    status:true
    }]

但我希望预期的结果是

[{
    id:1,
    name:'Zen',
    },
    {
    id:3,
    name:'Zohn',
    }]

3 个答案:

答案 0 :(得分:3)

您要描述的操作是map(输入的转换),而不是filter

users.filter(({status}) => status===true)
  .map(({id, name}) => ({id, name}));

答案 1 :(得分:1)

只需添加一个额外的map

const users2 = users
  .filter(user => user.status)
  .map(user => ({id: user.id, name: user.name}));

答案 2 :(得分:1)

这应该有效:

array.filer(val => val.status)
  .map(val => {
      return {
       id: val.id,
       name: val.name
      }
   })