前言
在 ES7 中,新增了一个 Array.prototype.includes 方法,用于判断一个数组中是否包含某个元素。该方法的使用非常方便,但是在使用时也需要注意一些细节和注意事项。本文将详细介绍该方法的使用和注意事项,并提供一些示例代码,希望能够对前端开发工程师有所帮助。
Array.prototype.includes 方法的使用
Array.prototype.includes 方法用于判断一个数组中是否包含某个元素,其语法如下:
array.includes(searchElement[, fromIndex])
其中,array 是要进行判断的数组,searchElement 是要查找的元素,fromIndex 是可选的参数,表示从哪个索引开始查找。该方法返回一个布尔值,表示是否包含该元素。
下面是一个简单的示例代码:
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。
需要注意的是,Array.prototype.includes 方法是区分类型的,即它会将要查找的元素和数组中的元素进行类型比较,只有在类型相同的情况下才会判断是否相等。下面是一个示例代码:
const arr = [1, 2, 3]; console.log(arr.includes('2')); // false
在上面的代码中,arr.includes('2') 返回 false,即使数组中包含元素 2,但是由于要查找的元素是一个字符串,而数组中的元素是一个数字,因此返回 false。
注意事项
在使用 Array.prototype.includes 方法时,需要注意以下几点:
1. fromIndex 参数的使用
Array.prototype.includes 方法的第二个参数 fromIndex 表示从哪个索引开始查找,如果省略该参数,则默认从 0 开始查找。需要注意的是,如果 fromIndex 的值为负数,则表示从数组末尾开始查找,例如:
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3, -2)); // false
在上面的代码中,arr.includes(3, -2) 返回 false,因为从倒数第二个元素开始查找,而 4 不等于 3。
2. NaN 的处理
由于 NaN 不等于任何值,因此在使用 Array.prototype.includes 方法查找 NaN 时需要特别注意。例如:
const arr = [1, 2, NaN]; console.log(arr.includes(NaN)); // true
在上面的代码中,arr.includes(NaN) 返回 true,因为数组中包含 NaN。
3. 对象的处理
如果要查找的元素是一个对象,那么只有当数组中的元素和要查找的元素是同一个对象时才会返回 true。例如:
const obj = { name: 'Tom' }; const arr = [obj]; console.log(arr.includes(obj)); // true console.log(arr.includes({ name: 'Tom' })); // false
在上面的代码中,arr.includes(obj) 返回 true,因为数组中的元素和要查找的元素是同一个对象。而 arr.includes({name: 'Tom'}) 返回 false,因为虽然数组中的元素和要查找的元素的属性值相同,但它们是不同的对象。
总结
Array.prototype.includes 方法是一个非常实用的方法,可以方便地判断一个数组中是否包含某个元素。在使用该方法时,需要注意 fromIndex 参数的使用、NaN 的处理以及对象的处理等细节。希望本文能够对读者有所帮助,让大家能够更加熟练地使用该方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650ea24895b1f8cacd7b9324