在 ECMAScript 2016 中,引入了 Array.prototype.includes
方法,用于判断数组中是否包含某个元素。在 ECMAScript 2019 中,该方法进行了升级,增加了第二个参数,用于指定比较的起始位置。本文将详细介绍 Array.prototype.includes
方法的使用场景及其在实际开发中的应用。
语法
Array.prototype.includes(searchElement[, fromIndex])
searchElement
:要查找的元素。fromIndex
:可选参数,从该位置开始查找。
返回值:如果数组中包含指定的元素,则返回 true
,否则返回 false
。
示例
const arr = [1, 2, 3, 4, 5]; console.log(arr.includes(3)); // true console.log(arr.includes(6)); // false console.log(arr.includes(3, 2)); // true console.log(arr.includes(3, 3)); // false
在上面的示例中,我们首先定义了一个包含 1~5 的数组 arr
,然后分别使用 includes
方法判断数组中是否包含元素 3 和 6。接着,我们通过传递第二个参数来指定比较的起始位置。在第一个示例中,我们没有传递第二个参数,因此从数组的第一个元素开始查找;在第二个示例中,我们传递了一个不存在的元素 6,因此返回 false
;在第三个示例中,我们传递了第二个参数 2,表示从数组的第三个元素开始查找,最终返回 true
;在第四个示例中,我们传递了第二个参数 3,表示从数组的第四个元素开始查找,由于数组中不存在元素 3,因此返回 false
。
使用场景
判断数组中是否包含某个元素
Array.prototype.includes
方法最常见的使用场景就是判断数组中是否包含某个元素。在实际开发中,我们经常需要根据数组中是否包含某个元素来进行不同的逻辑处理,例如:
const arr = [1, 2, 3, 4, 5]; if (arr.includes(3)) { console.log('数组中包含元素 3'); } else { console.log('数组中不包含元素 3'); }
在上面的示例中,我们使用 includes
方法判断数组中是否包含元素 3,并根据判断结果输出不同的信息。
判断数组中是否包含某些元素
除了判断数组中是否包含某个元素,Array.prototype.includes
方法还可以用于判断数组中是否包含某些元素。我们可以通过遍历需要判断的元素,逐个使用 includes
方法进行判断,例如:
const arr = [1, 2, 3, 4, 5]; const searchArr = [2, 3, 6]; const result = searchArr.every(item => arr.includes(item)); console.log(result); // false
在上面的示例中,我们首先定义了一个包含 1~5 的数组 arr
,然后定义了一个需要判断的元素数组 searchArr
,其中包含了元素 2、3 和 6。接着,我们使用 every
方法遍历 searchArr
中的元素,逐个使用 includes
方法判断其是否存在于 arr
数组中。由于 arr
数组中不存在元素 6,因此最终返回 false
。
判断数组中是否包含符合条件的元素
除了判断数组中是否包含某些元素,Array.prototype.includes
方法还可以用于判断数组中是否包含符合条件的元素。我们可以通过遍历数组,逐个使用 includes
方法进行判断,例如:
const arr = [1, 2, 3, 4, 5]; const result = arr.some(item => item > 3 && item < 6); console.log(result); // true
在上面的示例中,我们使用 some
方法遍历 arr
数组中的元素,逐个使用 includes
方法判断其是否符合条件(大于 3 且小于 6)。由于数组中存在符合条件的元素 4 和 5,因此最终返回 true
。
总结
Array.prototype.includes
方法是 ECMAScript 2016 中引入的一个方法,用于判断数组中是否包含某个元素。在 ECMAScript 2019 中,该方法进行了升级,增加了第二个参数,用于指定比较的起始位置。在实际开发中,我们可以根据该方法的特性,灵活运用,实现不同的功能。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657bba75d2f5e1655d6602ea