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

如何在JavaScript对象中找出值为奇数的对应键?

解决JavaScript对象中查找值为奇数的键的问题

问题描述

我在JavaScript中有一个对象,想要找出其中值为奇数的项,并返回该值对应的键。例如:

const myObject = {
                   'a': 4,
                   'b': 6,
                   'c': 7,
                   'd': 8
                  }

针对这个对象,我希望返回'c'。以下是我尝试的代码,但运行出现错误:

const myObject = {
  'a': 4,
  'b': 6,
  'c': 7,
  'd': 8
}
myObject.forEach((i) => {
  if (counts.value[i] % 2 === 0)
    return counts.key[i];
});

错误原因分析

  • JavaScript普通对象没有forEach方法,这个方法是数组专属的,直接在对象上调用会报错。
  • 代码里用到了未定义的counts变量,而且条件写反了——要找奇数应该判断value % 2 !== 0,而不是等于0。

正确解法

方法1:用Object.entries遍历键值对

Object.entries能把对象转换成[键, 值]格式的数组,再用数组的find方法找到符合条件的项:

const myObject = {
  'a': 4,
  'b': 6,
  'c': 7,
  'd': 8
};

// 找到第一个值为奇数的键
const targetEntry = Object.entries(myObject).find(([key, value]) => value % 2 !== 0);
const oddKey = targetEntry ? targetEntry[0] : null;

console.log(oddKey); // 输出 'c'

加个判断是为了防止对象里没有奇数项时出现Cannot read property '0' of undefined的错误。

方法2:用Object.keys遍历键

先获取对象所有键,再循环检查每个键对应的值:

const myObject = {
  'a': 4,
  'b': 6,
  'c': 7,
  'd': 8
};

let oddKey = null;
// 遍历所有键
for (const key of Object.keys(myObject)) {
  if (myObject[key] % 2 !== 0) {
    oddKey = key;
    break; // 找到第一个就停止循环,提升效率
  }
}

console.log(oddKey); // 输出 'c'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 08:20:28