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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:03