前言
在前端开发中,数组是我们常常使用的一种数据类型。在 ECMAScript 2016 中,新增了 Array.prototype.includes() 方法,可以方便地判断一个数组是否包含某个元素。在 ECMAScript 2019 中,这个方法又进行了一些改进和增强,本文将详细介绍 Array.prototype.includes() 方法的用法和注意事项。
简介
Array.prototype.includes() 方法用于判断一个数组是否包含某个元素,返回值为布尔类型。该方法的语法如下:
array.includes(searchElement[, fromIndex])
其中,searchElement 表示要查找的元素,fromIndex 表示从哪个位置开始查找。如果省略 fromIndex,则默认从数组的起始位置开始查找。
示例
下面是一个简单的示例,演示了如何使用 Array.prototype.includes() 方法来判断一个数组是否包含某个元素:
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false
上面的代码中,arr.includes(3) 返回 true,因为数组 arr 包含元素 3;arr.includes(6) 返回 false,因为数组 arr 不包含元素 6。
注意事项
1. 比较方式
Array.prototype.includes() 方法使用的是“同值相等”比较方式。这意味着它会先将要查找的元素和数组中的每个元素进行“同值相等”比较,然后返回第一个匹配的元素的下标。在比较过程中,它会使用 Object.is() 方法进行比较。
console.log(NaN === NaN); // false console.log(Object.is(NaN, NaN)); // true
上面的代码中,NaN === NaN 返回 false,因为 NaN 不等于任何值,包括它自己;而 Object.is(NaN, NaN) 返回 true,因为 Object.is() 方法使用的是“同值相等”比较方式。
2. 查找顺序
Array.prototype.includes() 方法从 fromIndex 开始查找元素,如果找到了就返回 true。如果没有找到,就返回 false。如果省略了 fromIndex,就从数组的起始位置开始查找。如果 fromIndex 是负数,则从数组的末尾开始查找。
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3, 2)); // true,从下标 2 开始查找 console.log(arr.includes(3, -3)); // false,从下标 2 开始查找,但是 3 在这之前已经被找到了
3. 可枚举属性
Array.prototype.includes() 方法只会查找数组的可枚举属性。因此,如果数组中某个元素不是可枚举属性,该方法就无法找到它。
const obj = {0: 'a', 1: 'b', length: 2}; console.log(Array.prototype.includes.call(obj, 'a')); // true console.log(Array.prototype.includes.call(obj, 'b')); // true console.log(Array.prototype.includes.call(obj, 'length')); // false,因为 length 不是可枚举属性
总结
Array.prototype.includes() 方法是 ECMAScript 2016 中新增的方法,用于判断一个数组是否包含某个元素。在 ECMAScript 2019 中,这个方法进行了一些改进和增强,可以更好地满足我们的需求。在使用该方法时,需要注意比较方式、查找顺序和可枚举属性等问题。希望本文能够对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65742e9ed2f5e1655dd71a9d