如何在JavaScript中判断指定值是否存在于Object对象中
JS判断对象中是否存在指定值的实现方案
基础实现(适配你给出的示例场景)
你示例中需要的功能可以通过Object.values()配合数组includes()方法实现,首先修正你示例代码的语法问题后完整可运行代码如下:
// 修正语法:键值对用逗号分隔,字符串类型的值加引号 let object = { 1: 'hey', 2: 'hi', 3: 'hello' } // 判断值是否存在 let exist = Object.values(object).includes('hello') console.log(exist) // 输出 true
Object.values()会提取对象所有自身可枚举属性的值组成数组,includes()会基于严格相等(===)规则判断数组中是否存在目标值,和你预期的object.value("hello")调用效果完全一致。
拓展用法
自定义匹配规则
如果需要非严格匹配、或者自定义判断逻辑,可以替换为some()方法:
// 示例:忽略大小写匹配 let exist = Object.values(object).some(item => item.toLowerCase() === 'HELLO'.toLowerCase()) console.log(exist) // 输出 true
工具函数封装
如果你想要和示例类似的调用方式,可以封装独立工具函数,不建议直接修改Object原型避免全局冲突:
function checkObjectHasValue(obj, targetVal) { return Object.values(obj).includes(targetVal) } // 调用 let exist = checkObjectHasValue(object, 'hello')
ES5兼容方案
如果需要支持不支持ES2017的老旧环境,可以用for in循环实现:
let exist = false // 遍历对象属性 for (let key in object) { // 过滤原型链上的继承属性,只判断自身属性 if (object.hasOwnProperty(key) && object[key] === 'hello') { exist = true // 匹配到就提前终止循环,优化性能 break } } console.log(exist) // 输出 true
注意区分判断键/值的逻辑
如果你需要判断的是键名是否存在,而非值,使用以下方法即可:
- 检查自身属性:
Object.hasOwn(object, '1') - 包含原型链属性:
'1' in object
内容的提问来源于stack exchange,提问作者E11even
相关产品推荐
相关产品推荐

