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

为何Object.values(obj).includes('test1')返回false?'test1'是'test1w'的子串

问题原因和解决办法

嘿,这事儿其实是因为 Array.prototype.includes() 的工作方式和你想的不一样——它只会找数组里完全一模一样的元素,不会去检查元素里是不是包含某个子串哦。

咱们一步步拆解你的代码:

  1. 执行 Object.values(obj) 后,会把对象的所有值提取成数组,也就是 ["test1w", "test2"]
  2. 接着调用 includes("test1"),它会挨个对比数组里的每个元素:
    • 第一个元素是 "test1w",和 "test1" 显然不是完全相等的
    • 第二个元素 "test2" 就更不用说了,完全不沾边
      所以最后 exist 自然是 false。

如果你的需求是检查对象里有没有某个值包含"test1"这个子串,那得换个方法——用 Array.prototype.some() 配合字符串的 includes() 就行:

var obj = { "a": "test1w", "b": "test2" };
let exist = Object.values(obj).some(val => val.includes("test1"));
console.log(exist); // 这时候就会输出 true 啦

这里的逻辑很简单:some() 会遍历数组里的每个值,对每个值用字符串的 includes() 检查是否包含"test1",只要有一个值满足,some() 就直接返回 true,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:41:41