首页 > 解决方案 > JavaScript 过滤器代替映射

问题描述

我有这个代码:

const uniform = {
  zone: 'BOTTOM'
}

const sizes = [

  {
    _id: 'sizeId2',
    zones: ['BOTTOM'],
    value: '48'
  },
  {
    _id: 'sizeId3',
    zones: ['BOTTOM'],
    value: '42'
  },
]
sizes.map((size) => (size.zones.includes(uniform.zone) ? {
  _id: size._id,
  value: size.value,
} : null))

https://jsfiddle.net/pmiranda/945fsdw7/5/

// here I'm trying another way than map and the ternary
console.log(sizes.filter((size) => (size.zones.includes(uniform.zone) && {
  _id: size._id,
  value: size.value,
})))

我想知道,我怎么能用 替换mapfilter?因为我认为使用 null 的三元映射可以以更好的方式完成,另外,在mapnull最终得到的方式中,我不想将它添加到数组中

标签: javascript

解决方案


我认为你会过滤然后映射:

sizes.filter(size => size.zones.includes(uniform.zone)).map(size => ({
  _id: size._id,
  value: size.value,
}));

您可能需要返回结果,或将其分配给变量。


推荐阅读