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

JavaScript多对象数组过滤:匹配Category与Title并获取Pending值

解决同时匹配Category和Title的过滤问题

我看出来你的问题啦——原来的代码只检查了Category字段的匹配,没处理Title是数组的情况,而且逻辑上只要匹配到一个key就返回,没法确保两个条件同时满足。咱们来一步步修正:

原代码的问题点

  • 对于Title字段,你要匹配的是数组里的某个元素,但原代码用了item[key] === filter[key],数组和字符串肯定不会相等,所以这部分永远匹配不上
  • 循环里只要有一个key匹配就直接返回,没法保证所有过滤条件都满足

修正后的代码

把你原来的filter函数替换成下面这段:

let s = autoNotifyCategories.notify.filter(function(item) {
  // 确保所有过滤条件都满足
  let matchesAll = true;
  for (var key in filter) {
    if (key === 'Title') {
      // Title是数组,用includes判断是否包含目标值
      if (!item[key].includes(filter[key])) {
        matchesAll = false;
        break;
      }
    } else {
      // 其他字段直接比较
      if (item[key] !== filter[key]) {
        matchesAll = false;
        break;
      }
    }
  }
  return matchesAll;
});

代码解释

  1. 先初始化matchesAll为true,默认认为当前item符合所有条件
  2. 遍历过滤条件的每个key:
    • 如果是Title字段,用数组的includes方法检查是否包含过滤的标题值
    • 其他字段(比如Category)直接做全等比较
  3. 只要有一个条件不满足,就把matchesAll设为false并跳出循环
  4. 最后返回matchesAll,只有所有条件都满足的item才会被保留

这样修改后,点击按钮就能正确过滤出Category3且包含Title4的对象,弹出它的Pending值啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:55:19