You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS使用map对对象数组应用多条件提取数据未达预期如何解决

你写的代码存在三个问题:

  • 没有过滤product为NON_PROD的项,这部分数据会混入最终结果
  • 非PROD0的分支没有添加return语句,内部map的执行结果没有被返回,对应位置会得到undefined
  • map方法是一对一映射,当你需要为单个原数组项返回多个结果值时,会产生嵌套数组,无法得到预期的一维数组结构

正确实现

使用flatMap替代map,flatMap会先执行映射再把返回的数组展平一层,刚好满足需求:

const subProdList = productInfo.flatMap(prod => {
  // 排除NON_PROD项,返回空数组展平后不会留存结果
  if (prod.product === 'NON_PROD') return []
  // PROD0直接返回包装成单元素数组的产品名
  if (prod.product === 'PROD0') return [prod.product]
  // 其余产品返回所有subProd组成的数组
  return prod.subProducts.map(subProduct => subProduct.subProd)
})

执行后得到的subProdList就是你期望的["PROD0", "SUBPROD4", "SUBPROD5", "SUBPROD6"]。

内容的提问来源于stack exchange,提问作者user16902936

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:45:04