Array.prototype.includes この章では、ドメニック・デニコラとリック・ウォルドロンによる「Array.prototype.includes」という ECMAScript 2016 の機能について説明します。
> ['a', 'b', 'c'].includes('a')
true
> ['a', 'b', 'c'].includes('d')
false
includes 配列メソッド includes は次のシグネチャを持っています。
Array.prototype.includes(value : any) : boolean
value がレシーバー(this)の要素の場合に true を返し、そうでない場合は false を返します。
> ['a', 'b', 'c'].includes('a')
true
> ['a', 'b', 'c'].includes('d')
false
includes は indexOf に似ていますが、次の 2 つの式はほぼ同等です。
arr.includes(x)
arr.indexOf(x) >= 0
主な違いは、includes() は NaN を見つけることができるのに対し、indexOf() は見つけることができないことです。
> [NaN].includes(NaN)
true
> [NaN].indexOf(NaN)
-1
includes は +0 と -0 を区別しません(これは、ほとんどすべての JavaScript が機能する方法です
> [-0].includes(+0)
true
Typed 配列にも includes() メソッドがあります。
let tarr = Uint8Array.of(12, 5, 3);
console.log(tarr.includes(5)); // true
includes と呼ばれ、contains と呼ばれないのですか?includes と呼ばれ、has と呼ばれないのですか?has はキー(Map.prototype.has)に使用され、includes は要素(String.prototype.includes)に使用されます。Set の要素はキーと値の両方とみなすことができるため、Set.prototype.has が(includes がない)理由があります。String.prototype.includes は文字ではなく文字列で動作します。Array.prototype.includes に関してはこれは矛盾しないのですか?includes が文字列 includes とまったく同じように動作する場合、単一要素ではなく配列を受け入れます。しかし、2 つの includes は indexOf の例に従います。文字は特別なケースとして扱われ、任意の長さの文字列は一般的なケースとして扱われます。Array.prototype.includes(ドメニック・デニコラ、リック・ウォルドロン)