JavaScript | indexOf() / lastIndexOf() / includes() / find() / findIndex() と比較して、どれをいつ使うか図解で説明

JavaScript JavaScript
スポンサーリンク

indexOf() / lastIndexOf() に続いて、includes()find()findIndex() は「配列から値や条件に合う要素を探す」ときによく使われるメソッドです。

初心者でも直感的に理解できるように、図解+例+実際の使いどころで説明します。


1. 配列検索メソッドの全体図

メソッド名探す方向条件指定の方法返すもの主な使いどころ
indexOf()左から値(完全一致)インデックス'a' → 0値がある位置を調べたい
lastIndexOf()右から値(完全一致)インデックス'a' → 4最後に出た位置を知りたい
includes()左から値(完全一致)真偽値(true/false)'a' → true値が「あるかどうか」だけ知りたい
find()左から条件(関数)見つかった要素年齢20以上 → {name:'太郎', age:20}条件に合う「中身」がほしい
findIndex()左から条件(関数)見つかった要素のインデックス年齢20以上 → 1条件に合う「位置」がほしい

2. イメージ図で理解!

【A】indexOf()/lastIndexOf()/includes()

🔹 値を直接指定して検索するタイプ
(「完全一致」==== 比較)

配列: ['🍎','🍌','🍎','🍒']

indexOf('🍎')       → 0    (左から最初)
lastIndexOf('🍎')   → 2    (右から最初)
includes('🍎')      → true (存在するかどうか)
includes('🍍')      → false
JavaScript

🧠 イメージ図:

← 左から右へ ────────────────────→

 🍎(0)   🍌(1)   🍎(2)   🍒(3)
 ↑indexOf('🍎')     ↑lastIndexOf('🍎')

【B】find()/findIndex()

🔹 値ではなく、条件(関数) で検索するタイプ。
(中身を細かく調べたいときに最適)

const users = [
  { name: '太郎', age: 15 },
  { name: '花子', age: 20 },
  { name: '次郎', age: 25 }
];

// find: 条件に合う「要素」を返す
console.log(users.find(u => u.age >= 20));
// => { name: '花子', age: 20 }

// findIndex: 条件に合う「位置(インデックス)」を返す
console.log(users.findIndex(u => u.age >= 20));
// => 1
JavaScript

🧠 イメージ図:

配列:
0:{太郎,15}   1:{花子,20}   2:{次郎,25}
          ↑ 最初に条件(age>=20)を満たす位置

find()      → {花子,20}
findIndex() → 1

3. どう使い分ける?(実践ベストプラクティス)

目的おすすめメソッド理由
「値が含まれているか」だけ調べたいincludes()結果が true/false でシンプル
「値がどこにあるか」調べたいindexOf()最初の位置を知りたい
「最後に出た位置」を知りたいlastIndexOf()右から探せる
「条件に合う中身(オブジェクト)」を取得したいfind()要素そのものを返す
「条件に合う要素の位置」を知りたいfindIndex()条件を満たす最初の位置を返す

4. 使い分けのリアル例

✅ 例1:TODOリストの中に「完了済み」があるか?

const todos = ['買い物', '掃除', '読書(完了)'];
console.log(todos.includes('掃除')); // true
JavaScript

✅ 例2:特定の名前の人がリストにいるか(値検索)

const names = ['太郎', '花子', '次郎'];
console.log(names.indexOf('花子')); // 1
JavaScript

✅ 例3:年齢20歳以上の最初の人を探す(条件検索)

const users = [
  { name: '太郎', age: 15 },
  { name: '花子', age: 20 },
  { name: '次郎', age: 25 }
];
const adult = users.find(u => u.age >= 20);
console.log(adult); // { name: '花子', age: 20 }
JavaScript

✅ 例4:20歳以上の人がいるかどうかだけ知りたい

const hasAdult = users.some(u => u.age >= 20);
console.log(hasAdult); // true
JavaScript

💡補足:「some()」は find() と似ていますが、「あるかないか」だけ調べて真偽値を返します。


5. まとめ図(これだけ覚えればOK)

┌─────────────────────────────────┐
│ 値で検索      │ 条件で検索                                │
├────────┬────────────────────────┤
│ indexOf()    │ findIndex()  │ 位置を返す                │
│ lastIndexOf()│              │                          │
├────────┼────────────────────────┤
│ includes()   │ find()       │ 要素そのもの/存在を返す    │
└────────┴────────────────────────┘

6. 初心者向けポイントまとめ

  • 値を直接検索includes()indexOf()lastIndexOf()
  • 条件で検索find()findIndex()(コールバック関数が必要)
  • find は「中身そのもの」
    findIndex は「位置」
  • 存在チェックだけなら includes() が一番シンプル!
タイトルとURLをコピーしました