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

JavaScript中includes()检测嵌套数组返回false的原因是什么

问题说明

执行以下JavaScript代码时,控制台会依次输出true、false:

const myArray = [
  [2, 4], "cat", "hamster", 9
]
console.log(myArray.includes("cat"))
console.log(myArray.includes([2, 4]))

对应的疑问是:includes()方法是否无法识别数组中嵌套的数组元素?

结论与原理
  • 不是includes()无法识别嵌套数组,本质是它的相等判断规则决定了这个结果。
  • includes()采用**SameValueZero(零值相等)**规则做匹配,和严格相等===的逻辑基本一致:
    • 对字符串、数字这类原始值,直接比对值内容,所以"cat"可以被正常匹配到,返回true。
    • 对数组、对象这类引用类型值,比对的是值的内存引用地址,不是实际存储的内容。
  • 代码里初始化myArray时写入的[2,4],和传给includes()做参数的[2,4]是两个独立创建的数组实例,内存地址完全不同,自然会被判定为不相等,返回false。

验证示例:如果传入和嵌套数组是同一个引用的变量,includes()就能正常匹配:

const nestedArr = [2, 4]
const myArray = [nestedArr, "cat", "hamster", 9]
console.log(myArray.includes(nestedArr)) // 输出 true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:18:15