includes 是 JavaScript 数组的内置方法,用于判断数组是否包含某个指定值并返回布尔值;它使用 SameValueZero 算法,支持 NaN 比较、大小写敏感、可选起始索引,但不支持对象深度相等或正则匹配。

includes 是 JavaScript 数组的内置方法,用于判断数组是否包含某个指定值,返回布尔值(true 或 false),简单直接,适合做存在性检查。
基本用法:检查元素是否存在
调用方式为 arr.includes(searchElement),它从头到尾线性查找,区分大小写,支持 NaN(这是它比 indexOf 更友好的地方):
-
[1, 2, 3].includes(2)→true -
['a', 'b', 'c'].includes('B')→false(大小写敏感) -
[1, NaN, 3].includes(NaN)→true(indexOf(NaN)会返回-1)
可选参数:从指定位置开始搜索
第二个参数 fromIndex 表示起始查找索引(默认为 0)。若为负数,则从末尾倒数计算位置:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
[1, 2, 3, 2, 4].includes(2, 2)→true(从索引 2 开始找,找到后面的 2) -
[1, 2, 3, 2, 4].includes(2, -2)→true(从倒数第 2 位即索引 3 开始,找到索引 3 的 2) -
[1, 2, 3].includes(1, 1)→false(索引 1 及之后没有 1)
注意点:不支持对象/函数的深度相等
includes 使用的是 SameValueZero 算法(类似 ===,但 NaN === NaN 为 false,而 includes 中视为相等),因此:
立即学习“Java免费学习笔记(深入)”;
- 对基本类型(数字、字符串、布尔值等)比较准确
- 对引用类型(对象、数组、函数),只比较引用地址,不是内容:
-
[[1], [2]].includes([1])→false(两个[1]是不同对象) - 如需按内容查找对象,得用
some()配合自定义条件,例如:arr.some(item => item.id === targetId)
与 indexOf 的主要区别
相比传统 indexOf() !== -1 写法,includes 更语义清晰、代码简洁,且正确处理 NaN:
-
[NaN].indexOf(NaN)→-1,但[NaN].includes(NaN)→true -
includes不返回索引,只关心“有没有”,更符合意图表达 - 不支持正则(传入正则会直接转为字符串,比如
/a/.toString()是"/a/")

















