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

如何按特殊条件过滤数组:获取含指定number的id对应全部元素

用filter实现目标数据过滤

当然可以用filter实现你的需求,只需分两步处理:先定位出所有包含number=3的id,再筛选出这些id对应的全部元素。

问题分析

你当前的代码仅筛选了number直接等于3的单个元素,但需求是保留所有存在number=3的id下的全部元素——比如id=10和300的所有元素都要保留。

解决方案代码

const data = [{
    id: 10,
    number: 3
  }, {
    id: 10,
    number: 2
  }, {
    id: 300,
    number: 1
  }, {
    id: 300,
    number: 3
  }, {
    id: 40,
    number: 1
  },
  {
    id: 40,
    number: 2
  }
]

// 1. 收集所有存在number=3的id(用Set自动去重)
const targetIds = new Set(
  data.filter(item => item.number === 3).map(item => item.id)
);

// 2. 过滤出所有id在目标集合中的元素
const filteredData = data.filter(item => targetIds.has(item.id));

console.log(filteredData);

代码说明

  1. 第一步通过filter筛选出所有number=3的元素,再用map提取它们的id并存入Set,得到需要保留的id集合(Set会自动去重,避免同一个id重复存储)。
  2. 第二步再次使用filter,判断每个元素的id是否在目标id集合中,符合条件的元素会被保留。

输出结果

运行代码后会得到你预期的结果:

[
  { id: 10, number: 3 },
  { id: 10, number: 2 },
  { id: 300, number: 1 },
  { id: 300, number: 3 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:45:51