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

如何按多条件匹配嵌套form_items元素以筛选目标对象数组

实现逻辑

筛选核心规则为:保留外层数组中满足以下要求的元素:过滤对象的每一项筛选条件,都能在该元素的form_items数组里找到至少一个子项匹配对应条件。

代码实现

// 转换过滤对象为键值对数组,方便遍历校验
const filterEntries = Object.entries(filter);

const filteredResult = array.filter(parentItem => {
  // 校验所有过滤条件是否都被满足
  return filterEntries.every(([filterKey, expectedValue]) => {
    // 校验当前外层元素的form_items中是否存在子项匹配当前单条过滤条件
    return parentItem.form_items.some(formSubItem => formSubItem[filterKey] === expectedValue);
  });
});

console.log(filteredResult); // 输出结果和你预期的完全一致

方法说明

  • Object.entries(filter):将过滤对象转换为[[键1, 值1], [键2, 值2]]格式的数组,统一遍历所有筛选规则
  • Array.filter:遍历原始外层数组,筛选出符合规则的元素
  • Array.every:保证所有筛选规则全部被满足,只要有一条规则不匹配就丢弃当前外层元素
  • Array.some:遍历form_items子数组,只要有一个子项匹配当前单条筛选规则就返回真

如果后续你需要调整规则为「同一个form子项同时满足所有过滤条件」,可以将代码调整为:

const filterEntries = Object.entries(filter);
const filteredResult = array.filter(parentItem => {
  return parentItem.form_items.some(formSubItem => {
    return filterEntries.every(([key, val]) => formSubItem[key] === val);
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:54:04