如何在 Javascript 中使用条件进行映射

los*_*193 7 javascript filter

我正在遍历一个对象数组:

people = [
  {id:1, name:"Bob", available:false},
  {id:2, name:"Sally", available:true},
  {id:1, name:"Trish", available:false},
]
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是可用的名称:

["Sally"]
Run Code Online (Sandbox Code Playgroud)

我目前知道如何映射和提取字段。如何添加条件?

  const peopleAvailable = people.map(person => person.value);
Run Code Online (Sandbox Code Playgroud)

想做这样的事情:

  const peopleAvailable = people.map(person.available => person.value);
Run Code Online (Sandbox Code Playgroud)

Dac*_*nny 13

您不能单独使用该函数进行条件映射.map(),但是您可以使用该函数.filter()来实现您的需求。

调用过滤器将返回一个新数组,其中新数组中的每个项目都满足您的过滤条件(即people.available === true)。

对于您的代码,您可以直接将过滤器与现有调用链接起来.map()以获得所需的结果:

const people = [{
    id: 1,
    name: "Bob",
    available: false
  },
  {
    id: 2,
    name: "Sally",
    available: true
  },
  {
    id: 1,
    name: "Trish",
    available: false
  },
];

const peopleAvailable = people
.filter(people => people.available)    /* filter available people */
.map(person => person.name)            /* map each person to name */ 

console.log(peopleAvailable);
Run Code Online (Sandbox Code Playgroud)