ES7(2016)Array.prototype.includes()

Posted 优小U

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES7(2016)Array.prototype.includes()相关的知识,希望对你有一定的参考价值。

在 ES7 之前想判断数组中是否包含一个元素,基本可以这样写:

let array1 = [1,2,3,4,5]
console.log(array1.find(function(item) {
    return item === 2
}))

// 或者
console.log(array1.filter(function(item) {
    return item === 2
}).length > 0)

ES7引入的Array.prototype.includes()方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false

基本用法

const arr = ['es6', 'es7', 'es8']
console.log(arr.includes('es6')) // true
console.log(arr.includes('es9')) // false

// 接收两个参数,第二个参数可选,从该索引处开始查找 searchElement。
const arr = ['es6', 'es7', 'es8']
console.log(arr.includes('es7', 1)) // true
console.log(arr.includes('es7', 2)) // false
console.log(arr.includes('es7', -1)) // false
console.log(arr.includes('es7', -2)) // true

indexOf()比较:

['a', 'b', 'c'].includes('a') //true
['a', 'b', 'c'].indexOf('a') > -1 //true

console.log(arr.indexOf('es7')) // 1
console.log(arr.indexOf('es7') > -1) // true

includes只能判断简单类型的数据,对于复杂类型的数据,比如对象类型的数组,二维数组,这些是无法判断的.

const arr = [1, [2, 3], 4]
arr.includes([2, 3]) //false
arr.indexOf([2, 3]) //-1

indexOfincludes不同:

const demo = [1, NaN, 2, 3]
demo.indexOf(NaN) //-1
demo.includes(NaN) //true

如果只想知道某个值是否在数组中存在,而并不关心它的索引位置,建议使用includes()。如果想获取一个值在数组中的位置,那么只能使用indexOf方法。

以上是关于ES7(2016)Array.prototype.includes()的主要内容,如果未能解决你的问题,请参考以下文章

ES7及ES8新特性

ES7的新特性

es7,es8

ES7新特性

ES7及ES8的新特性

ES7与ES8新特性