ES7 的 Array.prototype.includes 方法与 indexOf 方法的区别分析
在前端开发中,我们经常需要操作数组。在 JavaScript 中,数组是一种非常常用的数据类型。ES6 中新增了许多对数组的操作方法,如添加了 Array.isArray、Array.from、Array.of、Array.copyWithin 等方法。ES7 在 ES6 的基础上新增了 Array.prototype.includes 方法,它与 indexOf 方法非常相似,但也有些不同。
Array.prototype.includes 方法用于判断数组是否包含指定的值,返回值为布尔型。它的语法如下:
array.includes(valueToFind[, fromIndex])
其中,valueToFind 是要查找的值,fromIndex 是可选参数,表示从哪个索引开始查找,默认值为 0。
indexOf 方法也是用于查找数组中的值,返回值为查找到的元素在数组中的索引。它的语法如下:
array.indexOf(searchElement[, fromIndex])
其中,searchElement 是要查找的值,fromIndex 是可选参数,表示从哪个索引开始查找,默认值为 0。
虽然两个方法都可以用于查找数组中的元素,但是它们之间还是有一些区别的。
- 参数不同
两个方法接收的参数是不同的。includes 方法只接收一个值参数,而 indexOf 方法需要接收需要查找的值以及可选的起始索引位置。
- 返回值不同
两个方法的返回值也是不同的。includes 方法返回一个布尔值:如果数组中存在与指定值相等的元素,则返回 true,否则返回 false;而 indexOf 方法返回元素的索引,如果找不到则返回 -1。
- 数据类型的处理不同
两个方法处理数据类型的方式也是不同的。includes 方法判断数组中是否包含指定的值时,会将值转换为原始类型,然后使用严格相等运算符(===)进行比较;而 indexOf 方法在比较值时不会将值转换为原始类型,直接进行比较。
下面是一个使用 includes 方法和 indexOf 方法查找数组中指定元素的示例代码:
// javascriptcn.com 代码示例 const arr = [1, '2', 3, '4', 5]; // 使用 includes 方法查找... console.log(arr.includes('2')); // true console.log(arr.includes(2)); // false // 使用 indexOf 方法查找... console.log(arr.indexOf('2')); // 1 console.log(arr.indexOf(2)); // -1
在实际开发中,我们需要根据具体的场景选择使用 includes 方法还是 indexOf 方法。如果只需要判断数组中是否包含某个值,那么使用 includes 方法会更方便;如果需要获取元素在数组中的索引,那么使用 indexOf 方法会更合适。
总结
两个方法都是用于查找数组中的元素,但是它们的参数、返回值以及数据类型的处理方式都不同,开发者需要根据具体情况选择使用哪个方法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6501631e95b1f8cacdf1cfc9