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
相关产品推荐
相关产品推荐

