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

如何筛选拥有指定门对应钥匙的Characters数组对象?

解决方法

要筛选出拥有能打开特定门的钥匙的角色,你需要结合使用Array.filter()和Array.some()方法:

核心代码示例

const characters = [
  { id: "1", type: "water", keys: [{ name: "key_786", door: "XOPR" }] },
  { id: "2", type: "fire", keys: [{ name: "key_23", door: "JTHF" }] },
  { id: "3", type: "wind", keys: [{ name: "key_987", door: "XOPR" }] },
];

const targetDoor = 'XOPR';
// 筛选出拥有对应门钥匙的角色
const validCharacters = characters.filter(character => {
  // 检查当前角色的钥匙数组中,是否存在能打开目标门的钥匙
  return character.keys.some(key => key.door === targetDoor);
});

console.log(validCharacters);
// 输出结果:
// [
//   { id: "1", type: "water", keys: [{ name: "key_786", door: "XOPR" }] },
//   { id: "3", type: "wind", keys: [{ name: "key_987", door: "XOPR" }] }
// ]

方法说明

  • filter():遍历characters数组,只保留返回true的元素,最终得到符合条件的角色数组。
  • some():检查当前角色的keys数组,只要有一个钥匙的door属性匹配目标门,就返回true,表示该角色符合要求。

你之前尝试filter没成功,大概率是没处理keys是数组的情况——直接判断character.keys.door是无效的,因为keys是数组而非单个对象,必须遍历它来检查每一把钥匙。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:22:53