在 ECMAScript 2016 中,引入了 Array.includes 方法,用于判断数组中是否包含某个特定的元素。相较于传统的 Array.indexOf 方法,Array.includes 更为直观、简洁,使用也更加方便。本文将详细介绍 Array.includes 方法的实现、使用以及注意事项,并提供一些示例代码。
Array.includes 方法的实现
Array.includes 方法的实现非常简单,其语法结构如下:
array.includes(searchElement[, fromIndex])
其中,array 表示要进行判断的数组,searchElement 表示要查找的元素,fromIndex 表示搜索的起始位置,默认值为 0。
具体实现方法如下:
-- -------------------- ---- ------- ------------------------ - ----------------------- --------- - -- - ----- ------ - ------------ -- -------------------- --------- - --------- -- - - --------- - ------ - ---------- --- ---- - - ---------- - - ------- ---- - -- -------- --- -------------- - ------ ----- - - ------ ------ --
上述代码中,我们使用了 for 循环遍历数组,判断每个元素是否等于 searchElement,如果是,则返回 true,否则返回 false。需要注意的是,如果 fromIndex 小于 0,则表示从数组末尾开始搜索,因此需要将其转换为正数。
Array.includes 方法的使用
Array.includes 方法的使用非常简单,只需要调用该方法,并传入要查找的元素即可。下面是一些常见的使用场景:
查找数字
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false
查找字符串
const arr = ['apple', 'banana', 'orange']; console.log(arr.includes('banana')); // true console.log(arr.includes('kiwi')); // false
查找对象
const arr = [{name: 'Tom'}, {name: 'Jerry'}, {name: 'Spike'}]; console.log(arr.includes({name: 'Tom'})); // false console.log(arr.includes(arr[0])); // true
需要注意的是,如果要查找对象,需要传入对象的引用,而非对象的值。在上述代码中,我们传入了一个新的对象 {name: 'Tom'},由于该对象在内存中的地址与数组中的对象不同,因此返回 false。而当我们传入 arr[0] 时,由于该对象在数组中的地址与传入的引用相同,因此返回 true。
注意事项
在使用 Array.includes 方法时,需要注意以下几点:
1. fromIndex 的取值范围
fromIndex 表示搜索的起始位置,默认值为 0。如果 fromIndex 大于等于数组的长度,将返回 false。如果 fromIndex 小于 0,则从数组末尾开始搜索。
2. 查找对象时需要传入对象的引用
如果要查找对象,需要传入对象的引用,而非对象的值。如果传入的对象在内存中的地址与数组中的对象不同,将返回 false。
3. 不支持查找 NaN
Array.includes 方法判断元素是否相等时,使用的是 === 运算符,因此不支持查找 NaN。如果要查找 NaN,需要使用 Array.findIndex 方法。
示例代码
下面是一些常见的使用场景示例代码:
查找数字
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false
查找字符串
const arr = ['apple', 'banana', 'orange']; console.log(arr.includes('banana')); // true console.log(arr.includes('kiwi')); // false
查找对象
const arr = [{name: 'Tom'}, {name: 'Jerry'}, {name: 'Spike'}]; console.log(arr.includes({name: 'Tom'})); // false console.log(arr.includes(arr[0])); // true
查找 NaN
const arr = [1, 2, NaN, 4, 5]; console.log(arr.includes(NaN)); // false console.log(arr.findIndex(Number.isNaN)); // 2
总结
Array.includes 方法是 ECMAScript 2016 中新增的方法,用于判断数组中是否包含某个特定的元素。这个方法非常简单,使用也非常方便,但是需要注意一些细节,如 fromIndex 的取值范围、查找对象时需要传入对象的引用以及不支持查找 NaN 等。希望本文能够帮助读者更好地理解和使用 Array.includes 方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d027ffadd4f0e0ff934a77