ES6-数组实例的includes()方法

Array.prototype.includes()

定义

用来判断一个数组中是否包含一个指定的值,如果包含则返回true,否则返回false;

语法

arrayObject.includes(valueToFind [, fromIndex ])

参数

  • arrayObject:被查找的数组对象;
  • valueToFind:需要查找的某个元素值;
  • fromIndex:可选。从fromIndex 索引处开始查找 valueToFind。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜 (即使从末尾开始往前跳 fromIndex的绝对值个索引,然后往后搜寻)。默认为 0。

返回值

返回一个布尔值 Boolean ,如果在数组中找到了(如果传入了 fromIndex ,表示在 fromIndex指定的索引范围中找到了)则返回 true ,否则返回false。

注意

目前所有版本的IE浏览器不支持此方法,可以使用如下代码检查当前环境是否支持该方法,以及不支持情况下的一个简易替代版本:

const contains = {
    
    
	Array.prototype.includes 
	? (arr, value) => arr.includes(value)
	: (arr, value) => arr.some(el => el === value)
} ();
  • Array.prototype.some()方法将在ES5的分栏中有讲解

扩展

没有该方法之前,我们通常使用数组的indexOf()方法检查是否包含某个值。

if(arrayObject.indexOf(el) !== -1) {
    
    
	……
}

indexOf()方法有两个缺点:

  • 一是不够语义化,其定义是:找到参数值的第一次出现的位置,找不到时会返回 -1 ,所以还需要比较是否等于 -1,表达起来不够方便;
  • 二是,其内部使用的是严格等式运算符(===)进行判断,会导致对NaN的误判(因为NaN === NaN会返回false,如果数组中存在该元素,则无法找到);
let arr = [NaN, 8, "hello"]

arr.indexOf(NaN)
// 返回 -1
arr.includes(NaN)
// 返回 true

猜你喜欢

转载自blog.csdn.net/qq_40117020/article/details/108281288
今日推荐