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

JavaScript中如何根据匹配变量的值获取对象的键?

根据对象值获取对应键的实现方法

你有如下对象:

const obj = {
        "one@gmail.com": "email one",
        "two@gmail.com": "email two",
}

想实现根据给定变量匹配的值获取对象的键,你给出的变量及代码片段如下:

var outputVal = "email two";
    Object.entries(obj ).map(([key,value])=>{
          if(outputVal === value){
            console.log('output', key);
}

修正与优化方案

你的思路是对的,但代码存在语法问题和方法选择的小瑕疵,以下是修正后的实现:

方法1:用forEach遍历(适合仅执行打印等操作)

const obj = {
  "one@gmail.com": "email one",
  "two@gmail.com": "email two",
};

const outputVal = "email two";

Object.entries(obj).forEach(([key, value]) => {
  if (outputVal === value) {
    console.log('output', key); // 输出: output two@gmail.com
  }
});
  • 用forEach替代map,因为map的核心作用是生成新数组,这里仅需遍历执行操作,forEach更贴合场景。
  • 补全了代码中缺失的闭合括号与大括号,修复语法错误。

方法2:用find直接获取匹配键(更简洁)

如果只需要获取第一个匹配的键,可以用find方法直接返回结果:

const obj = {
  "one@gmail.com": "email one",
  "two@gmail.com": "email two",
};

const outputVal = "email two";
const matchedKey = Object.entries(obj).find(([key, value]) => value === outputVal)?.[0];

console.log('output', matchedKey); // 输出: output two@gmail.com
  • ?.[0]是可选链操作符,避免当没有匹配值时出现undefined访问报错。

方法3:处理多匹配值场景

如果对象中可能存在多个值相同的键,用filter收集所有匹配项:

const obj = {
  "one@gmail.com": "email one",
  "two@gmail.com": "email two",
  "three@gmail.com": "email two",
};

const outputVal = "email two";
const matchedKeys = Object.entries(obj)
  .filter(([key, value]) => value === outputVal)
  .map(([key]) => key);

console.log('output', matchedKeys); // 输出: output ["two@gmail.com", "three@gmail.com"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:22:47