Метод Array.includes в JS

В этой статье рассмотрим новый метод “Array.prototype.includes” добавленный в ECMAScript 2016

Обзор

> ['Angular', 'TypeScript', 'Node.js'].includes('TypeScript')
true
> ['Angular', 'TypeScript', 'Vue.js'].includes('TypeScript')
false

Метод для массива includes

Метод includes имеет такую сигнатуру:

Array.prototype.includes(elem : any) : boolean

Он возвращает истина если elem является элементом массива и ложь если в противном случае.
includes похож на метод indexOf – выражение нижа практически идентичны

array.includes(str)
array.indexOf(str)>=0

Главным отличием является, то что includes() находит NaN, а indexOf() нет:

let numbers=[1,NaN,3]
> numbers.includes(NaN)
true
> numbers.indexOf(NaN)
-1

Кроме того, includes не различает числа +0 и -0

> [0].includes(-0)
true

Метод includes также доступен в типизированных массивах

let typedArray=Uint8Array.of(1, 2, 3);
console.info(typedArray.includes(4));//false

Интересные факты

Почему метод назвали includes а не contains?
Изначально хотели назвать contains, но это слов уже используеться некоторыми библиотеками.

Почему метод назвали includes а не has?

has используется для ключей (Map.prototype.has), includes используется для элементов. Элементы множества includes могут рассматриваться как ключи и значения, по тому там был добавлен метод Set.prototype.has

ES6 метод String.prototype. includes работает с строками, но не с символами(Symbol). Не противоречит ли это тому как работает Array.prototype.includes?

Если б Array includes работал так де как String includes, как параметр он бы принимал массивы, не элементы.

 

nazarmsx

 

Leave a Reply

Your email address will not be published. Required fields are marked *