Array.prototype.includesとArray.prototype.indexOfの違い

Array.prototype.includesとArray.prototype.indexOfの違い:


はじめに

配列がある要素を含むか判定することはよくありますよね。その時に使われるメソッドとしては表題の二つがあります。

ちなみに私は基本的にincludesを使います。だってindexOfは結果と-1を比較しないとBooleanが取り出せないし、文字数多いもん。

恥ずかしながらarr.includes('a')arr.indexOf('a') !== -1は微妙に異なることに最近気が付いたので、調べたついでにまとめました。

このメソッドを使う時はBooleanを取り出したいことが多いので、その例を使います。


まず使い方

const arr = [1, 2, 3] 
// indexOfは存在しない場合-1を返す 
arr.indexOf(1) !== -1 // true 
arr.includes(1) // true 
どちらも第二引数にfromIndexを指定することもできます


null

const arr = [null] 
 
arr.indexOf(null) !== -1 // true 
arr.includes(null) // true 


undefined

const arr = [undefined] 
 
arr.indexOf(undefined) !== -1 // true 
arr.includes(undefined) // true 
これは同じ結果ですが、

const arr = [,] 
 
arr.indexOf(undefined) !== -1 // false !!! 
arr.includes(undefined) // true 
これはindexOfではundefinedとは異なる扱いを受けるようです。

a=[,]とした時にa[0]undefinedなのでincludesの挙動が正しい気がします。

もちろん

const arr = [] 
 
arr.indexOf(undefined) !== -1 // false 
arr.includes(undefined) // false 
です


NaN

const arr = [NaN] 
 
arr.indexOf(NaN) !== -1 // false !!! 
arr.includes(NaN) // true 
NaNはindexOfでは見つけられません。


まとめ


  • Array.prototype.includesArray.prototype.indexOfの挙動はだいたい同じ

  • indexOfNaN空の要素を見つけられない

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)