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

JavaScript:如何在含数组的对象中查找值对应的对象键?

解决方法

你现在的代码逻辑完全搞反了:Object.keys(rangesObj).find(val => search.includes(val)) 里的val是对象的键名(比如high、medium),你拿搜索字符串"63"去判断是否包含键名,这当然找不到结果。正确的逻辑应该是检查每个键对应的数组里有没有目标数字,还要注意字符串和数字的类型匹配问题。

给你两种可行的写法:

写法1:把搜索值转成数字再检查

const search = "63";
const searchNum = Number(search); // 转成数字,和数组里的元素类型统一

const rangesObj = {
  high: [67, 94, 57],
  medium: [43, 89, 63, 12],
  low: [27, 41, 77, 99],
};

const result = Object.keys(rangesObj).find(key => 
  rangesObj[key].includes(searchNum)
);

console.log(result); // 输出 "medium"

写法2:用宽松相等判断,不用转类型

如果不想额外转换类型,可以用some方法配合==来检查数组元素:

const search = "63";

const rangesObj = {
  high: [67, 94, 57],
  medium: [43, 89, 63, 12],
  low: [27, 41, 77, 99],
};

const result = Object.keys(rangesObj).find(key => 
  rangesObj[key].some(num => num == search)
);

console.log(result); // 输出 "medium"

逻辑说明

  • Object.keys(rangesObj) 会拿到对象的所有键:["high", "medium", "low"]
  • find 方法会遍历这些键,返回第一个符合条件的键
  • includes 是严格匹配类型的检查,所以需要把字符串转成数字才能匹配数组里的数字
  • some 方法只要数组里有一个元素满足条件就返回true,==会自动处理字符串和数字的类型转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:45:14