JavaScript Array.find()とfindIndex() - 要素の検索

Array.find()とfindIndex()で条件による要素の検索を学びます。findとfilterの比較、findLast(ES2023)、実用的な検索パターンを網羅。無料リファレンス。

Search

詳細な説明

find()とfindIndex()を理解する

Array.find()はテスト関数を満たす最初の要素を返します。Array.findIndex()はその要素のインデックスを返します。どちらもショートサーキットします — 一致が見つかるとすぐに反復を停止します。

構文

const element = array.find((el, index, array) => condition);
const idx = array.findIndex((el, index, array) => condition);

基本例

const users = [
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" },
  { id: 3, name: "Carol" }
];

const bob = users.find(u => u.id === 2);
// bob: { id: 2, name: "Bob" }

const bobIndex = users.findIndex(u => u.id === 2);
// bobIndex: 1

find() vs filter()

メソッド 戻り値 早期停止? 使い分け
find() 単一要素またはundefined はい 1つの結果が必要
filter() すべてのマッチの配列 いいえ すべての結果が必要

ES2023: findLast()とfindLastIndex()

配列の末尾から検索:

const nums = [1, 3, 5, 2, 4, 6];
nums.findLast(n => n > 3);      // 6
nums.findLastIndex(n => n > 3);  // 5

時系列データで最新のアイテムを見つけるのに便利です。

ユースケース

find()はIDによるレコード検索、要素の存在確認と同時の値取得、検索機能の実装に使用します。findIndex()はspliceや直接置換操作に位置が必要な場合に使用します。

試してみる — JavaScript Array Methods Reference

フルツールを開く