includes是数组内置方法,返回布尔值判断是否含某值,使用samevaluezero算法(可识别nan、0与-0相等),支持起始索引(含负数),但对象按引用比较且不适用嵌套结构。

includes 是数组的内置方法,直接返回 true 或 false,用来判断数组中是否含有某个值,写法简洁、语义清晰。
基本用法:传入要查找的值
调用方式为 数组.includes(查找值),它会从头到尾遍历数组,使用严格相等(===)比较:
-
[1, 2, 3].includes(2)→true -
['a', 'b', 'c'].includes('d')→false -
[NaN].includes(NaN)→true(这是includes和indexOf的关键区别:它能正确识别NaN)
支持起始搜索位置(可选第二个参数)
第二个参数指定从哪个索引开始查找,默认是 0。负数表示从末尾倒数:
-
[1, 2, 3, 2, 4].includes(2, 2)→true(从索引 2 开始找,找到后面的 2) -
[1, 2, 3].includes(1, -2)→false(从倒数第 2 位即索引 1 开始,跳过了开头的 1)
注意值类型和比较逻辑
includes 使用 SameValueZero 算法,意味着:
-
0和-0被视为相等:[0].includes(-0)→true -
undefined和undefined相等:[undefined].includes(undefined)→true - 对象按引用比较:
[{a:1}].includes({a:1})→false(两个不同对象,即使内容相同)
不适用于嵌套结构或复杂匹配
如果要判断对象数组中是否存在某个属性值,includes 无法直接完成,得用 some():
- ❌
[{id:1}, {id:2}].includes({id:1})→false - ✅
arr.some(item => item.id === 1)→true
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











