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

在对象数组中查找匹配属性失败,无法获取对应颜色值求助

问题分析与解决思路

首先得说,你这段代码的核心问题是逻辑绕错了,完全没必要去遍历对象的键来做匹配,而且这还导致了错误的判断逻辑,自然拿不到结果。

咱们拆解下原代码的问题:你写的Object.keys(obj).find(e => obj[e].type == tag)是个无效逻辑——Object.keys(obj)会返回当前对象的键数组(比如第一个对象就是['type', 'colour']),当e取type时,obj[e]是字符串"lecture",你再去访问字符串的.type属性,得到的只会是undefined,永远不可能等于tag的值,所以整个过滤逻辑根本匹配不到任何元素,控制台当然没输出。

正确的实现方式

你的目标是找到对应type的颜色值,这里用find方法更合适(因为你只需要一个匹配项),直接匹配对象的type属性就好:

方法1:用find直接获取目标对象并取颜色值

const tag = 'lecture';
const eventColour = [
  { type: "lecture", colour: "red" },
  { type: "social", colour: "blue" },
  { type: "break", colour: "green" }
];

// 找到匹配type的对象
const matchedEvent = eventColour.find(obj => obj.type === tag);
// 做个判空处理,避免找不到时出错
if (matchedEvent) {
  console.log(matchedEvent.colour); // 输出 red
} else {
  console.log('未找到对应的事件类型');
}

方法2:如果存在多个同类型的情况(用filter)

要是你的数组里可能有多个type相同的对象,用filter返回所有匹配项,再按需取颜色:

const matchedEvents = eventColour.filter(obj => obj.type === tag);
if (matchedEvents.length > 0) {
  // 取第一个匹配项的颜色,或者遍历所有项
  console.log(matchedEvents[0].colour);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:38