推荐答案
Array.prototype.includes
方法用于判断一个数组是否包含某个特定的值。如果包含,则返回 true
,否则返回 false
。该方法可以用于检查数组中是否存在某个元素,并且支持从指定的索引位置开始搜索。
本题详细解读
语法
arr.includes(valueToFind[, fromIndex])
valueToFind
:需要查找的值。fromIndex
(可选):从该索引位置开始查找。如果省略,则默认从索引0
开始查找。
返回值
- 如果数组中包含
valueToFind
,则返回true
。 - 如果数组中不包含
valueToFind
,则返回false
。
示例
const array = [1, 2, 3, 4, 5]; console.log(array.includes(3)); // true console.log(array.includes(6)); // false console.log(array.includes(3, 3)); // false,从索引3开始查找,3不在索引3及之后的位置
注意事项
includes
方法使用SameValueZero
算法进行比较,这意味着它能够正确处理NaN
值的比较。const array = [NaN]; console.log(array.includes(NaN)); // true
includes
方法不会对稀疏数组中的空槽进行特殊处理,空槽会被视为undefined
。const array = [1, , 3]; console.log(array.includes(undefined)); // true
includes
方法是区分大小写的,因此在处理字符串时需要注意大小写问题。const array = ['apple', 'banana', 'cherry']; console.log(array.includes('Apple')); // false
与 indexOf
的区别
indexOf
方法返回的是元素的索引,如果找不到则返回-1
,而includes
直接返回布尔值。indexOf
不能正确处理NaN
值的查找,而includes
可以。const array = [NaN]; console.log(array.indexOf(NaN)); // -1 console.log(array.includes(NaN)); // true
适用场景
- 当你只需要判断数组中是否包含某个值,而不关心其具体位置时,
includes
是一个简洁且高效的选择。 - 在处理可能包含
NaN
值的数组时,includes
是更可靠的选择。