使用带条件的地图从数组中提取 id javascript

Ham*_*oja 6 javascript ecmascript-6

有一个对象数组

  const groups = [
    { id: 0, name: "All", selected: false },
    { id: -1, name: "All", selected: true },
    { id: 1, name: "Group1", selected: false },
    { id: 2, name: "Group2", selected: false },
    { id: 3, name: "Group3", selected: false },
    { id: 4, name: "Group4", selected: true }
  ];
Run Code Online (Sandbox Code Playgroud)

我想用地图从这个对象中提取 ids

groups.map(group => group.id > 0 && group.selected ? group.id:null)
Run Code Online (Sandbox Code Playgroud)

但结果将是 [null,null,4,null...] 实际上它应该是[4]

我知道我可以使用另一个函数,如forEachpushmapfilter,但我会用 map 或其他东西进行一次迭代来解决它。

Eug*_*nic 5

根据您的条件过滤对象,然后使用地图提取 ID

const groups = [{
    id: 0,
    name: "All",
    selected: false
  },
  {
    id: -1,
    name: "All",
    selected: true
  },
  {
    id: 1,
    name: "Group1",
    selected: false
  },
  {
    id: 2,
    name: "Group2",
    selected: false
  },
  {
    id: 3,
    name: "Group3",
    selected: false
  },
  {
    id: 4,
    name: "Group4",
    selected: true
  }
];


const result = groups.filter(x => x.id > 0 && x.selected).map(x => x.id)
console.log(result)
Run Code Online (Sandbox Code Playgroud)