Array.prototype.includes()
includes()
方法是 Array
实例的方法,用于确定数组是否包含某个值,如果包含则返回 true
,否则返回 false
。
试一试
语法
js
includes(searchElement)
includes(searchElement, fromIndex)
参数
searchElement
-
要搜索的值。
fromIndex
可选-
开始搜索的基于零的索引,转换为整数。
- 负索引从数组末尾开始倒数 - 如果
-array.length <= fromIndex < 0
,则使用fromIndex + array.length
。但是,在这种情况下,数组仍然是从前到后搜索的。 - 如果
fromIndex < -array.length
或fromIndex
被省略,则使用0
,导致搜索整个数组。 - 如果
fromIndex >= array.length
,则不搜索数组并返回false
。
- 负索引从数组末尾开始倒数 - 如果
返回值
一个布尔值,如果值 searchElement
在数组中找到(或在指定索引 fromIndex
指示的数组部分中找到),则为 true
。
描述
includes()
方法使用 SameValueZero 算法将 searchElement
与数组的元素进行比较。所有零值都被认为是相等的,无论符号如何。(也就是说,-0
等于 0
),但 false
不被认为与 0
相同。NaN
可以被正确地搜索。
当用于 稀疏数组 时,includes()
方法迭代空插槽,就好像它们的值为 undefined
一样。
includes()
方法是 泛型 的。它只期望 this
值具有 length
属性和整数键属性。
示例
使用 includes()
js
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
["1", "2", "3"].includes(3); // false
fromIndex 大于或等于数组长度
如果 fromIndex
大于或等于数组的长度,则返回 false
。不会搜索数组。
js
const arr = ["a", "b", "c"];
arr.includes("c", 3); // false
arr.includes("c", 100); // false
计算出的索引小于 0
如果 fromIndex
为负数,则计算出的索引将被计算为用于作为数组中开始搜索 searchElement
的位置。如果计算出的索引小于或等于 0
,则将搜索整个数组。
js
// array length is 3
// fromIndex is -100
// computed index is 3 + (-100) = -97
const arr = ["a", "b", "c"];
arr.includes("a", -100); // true
arr.includes("b", -100); // true
arr.includes("c", -100); // true
arr.includes("a", -2); // false
在稀疏数组上使用 includes()
您可以在稀疏数组中搜索 undefined
并获得 true
。
js
console.log([1, , 3].includes(undefined)); // true
在非数组对象上调用 includes()
includes()
方法读取 this
的 length
属性,然后访问每个键为小于 length
的非负整数的属性。
js
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 1, // ignored by includes() since length is 3
};
console.log(Array.prototype.includes.call(arrayLike, 2));
// true
console.log(Array.prototype.includes.call(arrayLike, 1));
// false
规范
规范 |
---|
ECMAScript 语言规范 # sec-array.prototype.includes |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。