You need to enable JavaScript to run this app. 如何过滤嵌套在对象数组内的另一层对象数组 按指定label筛选匹配项
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤嵌套在对象数组内的另一层对象数组 按指定label筛选匹配项

错误原因
  • 外层Array.filter()的回调要求返回布尔值来判断是否保留当前元素
  • 你内层嵌套的Array.filter()始终返回数组类型:即使没有匹配项返回空数组,JS中空数组属于真值,会被外层filter判定为符合条件,因此所有合作伙伴都会被保留。
正确实现

将内层的filter替换为Array.some()即可,some方法会检测数组中是否存在至少一个满足条件的元素,直接返回布尔值,正好匹配外层filter的判断逻辑:

partnerFilter() {
  const targetLabel = 'Label 2'
  const partnersClean = this.partners.filter(function(e) {
    // 只要solution里有一个符合的label就保留当前partner
    return e.solution.some(function(item) {
      return item.label === targetLabel
    })
  })
  return partnersClean
}

如果使用ES6箭头函数可以写得更简洁:

partnerFilter() {
  const targetLabel = 'Label 2'
  return this.partners.filter(e => e.solution.some(item => item.label === targetLabel))
}
拓展说明
  • 如果需求改为筛选出solution数组所有label都匹配指定值的合作伙伴,可以把some替换为Array.every()
  • 如果需要匹配多个目标标签,调整内层判断逻辑即可。

内容的提问来源于stack exchange,提问作者ale.nakai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:54:03