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

如何过滤数组,筛选parent数组中id匹配child数组childid的元素?

问题解决:从parent数组筛选与child数组childid匹配的元素

你代码里的核心问题是JavaScript原生数组没有each方法(这是jQuery的方法),而且就算用了each,它也不会返回匹配结果,没法直接用来做相等判断。下面是两种可行的正确解法:

解法1:使用filter + some

直接在filter的回调中,用some检查当前parent元素的id是否在child数组的childid中存在:

const matchedParents = parent.filter(parentItem => 
  child.some(childItem => childItem.childid === parentItem.id)
);
  • some方法会遍历child数组,只要找到一个匹配的childid就返回true,filter就会保留当前parent元素。

解法2:先提取childid到Set,提升性能

如果child数组数据量较大,反复用some遍历会影响效率,建议先把所有childid提取到Set集合中,再做判断:

// 先收集所有child的childid到Set
const childIds = new Set(child.map(item => item.childid));
// 筛选parent中id存在于Set里的元素
const matchedParents = parent.filter(item => childIds.has(item.id));

这种方式只需要遍历child数组一次,后续的存在判断都是O(1)的时间复杂度,整体性能更优。

测试结果

用你提供的示例数据,两种方法都会得到以下结果:

[
  { id: 1, value: "ABC" },
  { id: 2, value: "DEF" }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:55:18