在前端开发中,数组是一种常见的数据类型。在实际的开发过程中,我们常常需要判断某个元素是否在一个数组中。以往,我们可能需要使用 indexOf() 方法来实现这个目标,然而随着 ECMAScript 2018 的发布,Array.prototype.includes() 方法已成为一种更好的选择。在这篇文章中,我们将详细探讨为什么需要使用 Array.prototype.includes()。
什么是 Array.prototype.includes()?
Array.prototype.includes() 方法用于确定一个数组是否包含一个指定的值。这个方法返回一个布尔值,表示数组中是否存在该值。具体用法如下:
array.includes(valueToFind[, fromIndex])
其中,valueToFind 参数为要搜索的值,fromIndex 参数为搜索的起始位置。如果省略 fromIndex 参数,则从数组的开始位置搜索。
为什么使用 Array.prototype.includes()?
下面的例子可以更好地展示为什么需要使用 Array.prototype.includes():
// javascriptcn.com 代码示例 const array = [1, 2, 3, 4, 5]; if (array.indexOf(3) !== -1) { console.log('found'); } if (array.includes(3)) { console.log('found'); }
在上述例子中,我们先用 indexOf() 方法来搜索数组中的元素 3。如果元素存在,我们会用 if 语句打印出 'found'。接下来,我们使用了 includes() 方法来完成同样的任务。通过比较两种方式,我们可以发现 includes() 方法的代码更加简洁,容易理解,并且不需要额外的判断语句。
此外,includes() 方法在判断 NaN 值时表现得更为合理。我们知道,数组的 indexOf() 方法使用的是严格相等运算符来判断元素是否相等,这会造成一些问题。例如:
const array = [NaN]; console.log(array.indexOf(NaN)); // -1
在上面的例子中,我们在数组中存储了一个 NaN 值,但是 indexOf() 方法无法正确处理这个值,返回了一个 -1。而如果我们使用 includes() 方法,就能得到正确的结果:
const array = [NaN]; console.log(array.includes(NaN)); // true
总结
在实际的开发工作中,使用 Array.prototype.includes() 方法能够有效简化代码,提升代码的可读性,并且能够更好地处理一些特殊情况,比如 NaN 值的判断。如果你还在使用 indexOf() 方法来判断数组中的元素是否存在,不妨尝试一下 includes() 方法,相信这个方法会给你带来更好的使用体验。
示例代码
下面是一组使用 Array.prototype.includes() 方法的示例代码:
// javascriptcn.com 代码示例 // 判断数组中是否包含特定值 const array = [1, 2, 3, 4, 5]; console.log(array.includes(3)); // true console.log(array.includes(6)); // false // 类型的判断 const arr = [1, '2', null]; console.log(arr.includes(null)); // true console.log(arr.includes(undefined)); // false // NaN 的判断 const nanArray = [1, NaN, 'test']; console.log(nanArray.includes(NaN)); // true
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652e61b57d4982a6ebf69a92