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

JavaScript 中如何将 Object 的值映射为对应的属性键

实现方案

你可以通过Object.entries()遍历对象的键值对,匹配到对应值后直接返回对应的键即可,以下是可直接运行的实现:

const category = {
    tech: 'Technology',
    gnr: 'General',
    ent: 'Entertainment',
    sci: 'Science',
}

// 封装成通用查找函数
function getKeyByValue(obj, targetValue) {
  for (const [key, value] of Object.entries(obj)) {
    if (value === targetValue) return key
  }
  return undefined
}

// 测试用例
console.log(getKeyByValue(category, 'Technology')) // 输出 'tech'
console.log(getKeyByValue(category, 'Science')) // 输出 'sci'

原有代码问题分析

你之前的写法存在两个核心问题:

  • 两层map遍历没有返回值,外层map的回调没有return内容,最终得到的数组全是undefined
  • 内层修改i的赋值逻辑完全错误,既没有做值匹配判断,也不会把匹配结果向外层传递

高频查找优化方案

如果需要多次执行值查键的操作,可以提前生成反向映射对象,后续查找复杂度为O(1),性能更高:

// 生成反向映射:{全写: 缩写}
const reverseCategory = Object.fromEntries(
  Object.entries(category).map(([key, value]) => [value, key])
)

// 直接取值即可
console.log(reverseCategory['Technology']) // 输出 'tech'
console.log(reverseCategory['Entertainment']) // 输出 'ent'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:04