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

