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

JavaScript:使用过滤对象列表筛选目标对象列表

没问题,我来帮你搞定用一个对象列表过滤另一个对象列表的需求!

用一个对象列表过滤英雄列表的实现方案

先补全你给出的英雄列表(把soldier的attribute补全为strength),方便后续演示:

const heroes = [ 
  { name: "warrior", primary_skill: "greater bash", attack_type: "melee", attribute: "strength" }, 
  { name: "ranger", primary_skill: "focus fire", attack_type: "range", attribute: "agility" }, 
  { name: "mage", primary_skill: "oblivion", attack_type: "magic", attribute: "intelligence" }, 
  { name: "soldier", primary_skill: "sword dance", attack_type: "melee", attribute: "strength" }
];

接下来分两种常见场景给你写实现代码:

场景1:匹配过滤列表中任意一个条件

假设你的过滤列表是这样的(想筛选力量型英雄或远程攻击英雄):

const filterList = [
  { attribute: "strength" },
  { attack_type: "range" }
];

用filter + some就能快速实现:

const filteredHeroes = heroes.filter(hero => {
  // 检查当前英雄是否符合过滤列表里的任意一个条件
  return filterList.some(filter => {
    const [key, value] = Object.entries(filter)[0];
    return hero[key] === value;
  });
});

console.log(filteredHeroes);
// 输出结果:warrior、ranger、soldier

场景2:匹配过滤列表中所有条件

如果需要英雄同时满足多个过滤条件(比如要找力量型且近战的英雄),把some换成every即可:

const strictFilterList = [
  { attribute: "strength" },
  { attack_type: "melee" }
];

const strictlyFilteredHeroes = heroes.filter(hero => {
  // 检查当前英雄是否符合过滤列表里的所有条件
  return strictFilterList.every(filter => {
    const [key, value] = Object.entries(filter)[0];
    return hero[key] === value;
  });
});

console.log(strictlyFilteredHeroes);
// 输出结果:warrior、soldier

扩展:支持多键值对的复杂过滤条件

如果你的过滤对象包含多个键值对(比如要找敏捷型且远程的英雄),可以调整内部判断逻辑:

const complexFilterList = [
  { attribute: "agility", attack_type: "range" },
  { attribute: "intelligence" }
];

const complexFilteredHeroes = heroes.filter(hero => {
  return complexFilterList.some(filter => {
    // 检查当前英雄是否满足这个过滤对象的所有键值对
    return Object.entries(filter).every(([key, value]) => hero[key] === value);
  });
});

console.log(complexFilteredHeroes);
// 输出结果:ranger、mage

这样不管你的过滤条件是简单还是复杂,都能灵活适配啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:21:56