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

如何改进数据过滤函数,使其仅保留满足所有条件的条目?

实现满足所有条件的数据过滤函数

需求说明

需要编写一个函数,接收data(待过滤的数据集)和include(条件数组)两个参数,仅保留同时满足所有include中条件的数据条目。

示例数据与预期结果

// 示例数据
const data = [
    { user: "mike@mail.com", rating: 20, disabled: false },
    { user: "greg@mail.com", rating: 14, disabled: false },
    { user: "john@mail.com", rating: 25, disabled: true }
];

// 条件数组:需同时满足disabled为false、rating为20
const include = [{ disabled: false }, { rating: 20 }];

预期返回结果:

[{ user: "mike@mail.com", rating: 20, disabled: false }]

原代码问题分析

你当前的实现会把满足任意一个条件的条目加入结果,无法实现“所有条件同时满足”的需求。原因是只要条目匹配到任意一个条件键值对,就会被推入结果数组,没有做全条件校验。

改进后的实现

const filterInclude = (data, include) => {
  return data.filter(item => {
    // 检查当前条目是否满足所有条件对象
    return include.every(cond => {
      // 检查当前条件对象的所有键值对是否都与条目匹配
      return Object.entries(cond).every(([key, value]) => {
        return item[key] === value;
      });
    });
  });
};

逻辑解释

  1. 使用Array.filter()遍历数据集,只保留符合条件的条目
  2. 用Array.every()确保当前条目满足include数组中的每一个条件对象
  3. 对每个条件对象,通过Object.entries()遍历其键值对,用every()确保所有键值对都与条目对应值完全匹配

测试验证

调用filterInclude(data, include)会返回预期的结果,仅保留同时满足两个条件的mike条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:15:43