カテゴリ: JavaScript 更新日: 2026/06/16

JavaScriptで配列のfind()・findIndex()を使って特定の要素を簡単に検索する方法

JavaScriptのfind()・findIndex()で特定の要素を検索しよう
JavaScriptのfind()・findIndex()で特定の要素を検索しよう

先生と生徒の会話形式で理解しよう

生徒

「先生、JavaScriptで配列の中から特定の値を探したいときってどうすればいいですか?」

先生

「その場合は、find()findIndex()という便利なメソッドを使うと簡単です。」

生徒

「find()とfindIndex()ってどう違うんですか?」

先生

「簡単に言うと、find()は条件に合う要素そのものを返して、findIndex()はその要素の位置、つまりインデックスを返します。」

生徒

「なるほど!じゃあ実際に使ってみたいです。」

先生

「では、基本から順番に見ていきましょう。」

1. find()メソッドとは?

1. find()メソッドとは?
1. find()メソッドとは?

JavaScriptのfind()メソッドは、配列の中から指定した条件に一致する最初の要素を取得できる便利なメソッドです。条件は関数で指定します。例えば、数字の配列から10より大きい最初の数字を探すことができます。


const numbers = [3, 7, 12, 9];
const result = numbers.find(num => num > 10);
console.log(result); // 12

この例では、num > 10という条件に一致する最初の数字、12が取得されています。

2. findIndex()メソッドとは?

2. findIndex()メソッドとは?
2. findIndex()メソッドとは?

一方、findIndex()は条件に一致する要素のインデックス(位置)を返します。要素そのものではなく、配列内の位置が必要な場合に便利です。


const numbers = [3, 7, 12, 9];
const index = numbers.findIndex(num => num > 10);
console.log(index); // 2

ここでは、12が配列の2番目(インデックスは0から数えるので2)にあることがわかります。

3. 文字列の配列でのfind()の使い方

3. 文字列の配列でのfind()の使い方
3. 文字列の配列でのfind()の使い方

文字列の配列でもfind()は使えます。例えば、名前の配列から特定の名前を探す場合です。


const names = ["太郎", "花子", "次郎"];
const foundName = names.find(name => name === "花子");
console.log(foundName); // 花子

条件に一致した文字列そのものが返ってくるので、見つけたかどうかの判定も簡単です。

4. findIndex()で文字列の位置を取得する

4. findIndex()で文字列の位置を取得する
4. findIndex()で文字列の位置を取得する

同じ配列で、見つけた名前の位置が知りたいときはfindIndex()を使います。


const names = ["太郎", "花子", "次郎"];
const nameIndex = names.findIndex(name => name === "花子");
console.log(nameIndex); // 1

配列のインデックスは0から始まるので、"花子"は1番目にあることがわかります。

5. オブジェクトの配列でfind()を使う

5. オブジェクトの配列でfind()を使う
5. オブジェクトの配列でfind()を使う

配列の中にオブジェクトが入っている場合もfind()は非常に便利です。例えば、ユーザー情報の配列から特定のIDを持つユーザーを探す場合です。


const users = [
  {id: 1, name: "太郎"},
  {id: 2, name: "花子"},
  {id: 3, name: "次郎"}
];
const user = users.find(u => u.id === 2);
console.log(user); // {id: 2, name: "花子"}

このように条件関数の中でオブジェクトのプロパティを参照することができます。

6. オブジェクトの配列でfindIndex()を使う

6. オブジェクトの配列でfindIndex()を使う
6. オブジェクトの配列でfindIndex()を使う

オブジェクト配列で位置を知りたい場合もfindIndex()が使えます。


const users = [
  {id: 1, name: "太郎"},
  {id: 2, name: "花子"},
  {id: 3, name: "次郎"}
];
const userIndex = users.findIndex(u => u.id === 2);
console.log(userIndex); // 1

これで、IDが2のユーザーが配列のどの位置にあるかすぐにわかります。

7. find()・findIndex()を使うときの注意点

7. find()・findIndex()を使うときの注意点
7. find()・findIndex()を使うときの注意点

両方のメソッドとも条件に一致する要素が見つからない場合、find()undefinedを返し、findIndex()-1を返します。必ずこのケースを考慮してプログラムを書くことが大切です。


const numbers = [3, 7, 12, 9];
const result = numbers.find(num => num > 20);
console.log(result); // undefined

const index = numbers.findIndex(num => num > 20);
console.log(index); // -1

このようにエラーにならずに安全に処理できます。

8. 複雑な条件でもfind()・findIndex()で簡単に検索

8. 複雑な条件でもfind()・findIndex()で簡単に検索
8. 複雑な条件でもfind()・findIndex()で簡単に検索

条件が複数でも、関数の中で論理演算子を使えば簡単に検索できます。例えば、数値が10以上かつ偶数の最初の要素を探す場合です。


const numbers = [3, 7, 12, 8];
const result = numbers.find(num => num >= 10 && num % 2 === 0);
console.log(result); // 12

const index = numbers.findIndex(num => num >= 10 && num % 2 === 0);
console.log(index); // 2

このように条件を自由に組み合わせて、配列の検索が簡単にできます。

9. まとめの前に簡単な会話で復習

9. まとめの前に簡単な会話で復習
9. まとめの前に簡単な会話で復習

生徒

「find()とfindIndex()は条件に一致する要素と位置を取得するメソッドなんですね。」

先生

「そうです。文字列、数値、オブジェクトなど様々な配列で使えて便利です。条件に合うものがない場合はundefined-1が返ってくるので注意してください。」

生徒

「複雑な条件も関数内で書けば検索できるんですね!」

先生

「その通りです。find()やfindIndex()を使いこなすと、JavaScriptで配列操作がぐっと簡単になります。」

まとめ

まとめ
まとめ

今回の記事では、JavaScriptで配列の特定の要素を簡単に検索する方法として、find()findIndex()の使い方を詳しく解説しました。find()は条件に一致する最初の要素そのものを返し、findIndex()はその要素のインデックスを返す便利なメソッドです。数値の配列、文字列の配列、オブジェクトの配列でも活用でき、条件が複雑でも関数内で論理演算子を組み合わせることで簡単に検索できます。また、条件に一致する要素がない場合の戻り値としてundefined-1が返ることも理解しておく必要があります。

具体的には、数値の配列で10より大きい数字を探す場合はfind()で要素を取得し、findIndex()でその位置を確認できます。文字列の配列では特定の名前を検索する際に同様の操作が可能です。オブジェクトの配列では、プロパティを条件に検索することで、IDや名前などの条件に一致するオブジェクトを効率よく取得できます。

さらに、複雑な条件を指定して、数値が10以上かつ偶数である最初の要素を探したり、オブジェクトの特定のプロパティに一致するユーザー情報を取得することもできます。find()findIndex()はどちらも配列の操作において非常に便利で、実務でもよく使われる方法です。条件に一致する要素が存在しない場合も安全に処理できるため、エラーを防ぎながら配列検索を行うことが可能です。

サンプルプログラムとして、数値配列から特定の条件に一致する要素を探す例を改めて示します。


const numbers = [5, 8, 12, 15, 20];
const firstMatch = numbers.find(num => num > 10);
const firstIndex = numbers.findIndex(num => num > 10);

console.log(firstMatch); // 12
console.log(firstIndex); // 2

このように、find()で値を取得し、findIndex()で位置を確認することで、配列内のデータ操作が効率化されます。また、文字列やオブジェクトでも同様に条件を関数で指定することで柔軟に検索が可能です。

配列検索を行う際は、必ず条件に一致しない場合の挙動も考慮して、undefined-1が返るケースを安全に処理することが重要です。これにより、実務においても安定したJavaScriptプログラムを書くことができます。

先生と生徒の振り返り会話

生徒

「先生、find()とfindIndex()は配列を検索するメソッドで、それぞれ取得するものが違うんですね。」

先生

「そうです。find()は条件に一致する要素そのものを返し、findIndex()はその位置を返します。数値、文字列、オブジェクトの配列でも使えて便利です。」

生徒

「なるほど、条件に一致しない場合はどうなるんですか?」

先生

find()undefinedfindIndex()-1を返すので、その点を考慮してコードを書くことが大切です。」

生徒

「複雑な条件も関数内で論理演算子を使えば検索できるんですね。」

先生

「その通りです。例えば、数値が10以上で偶数の最初の要素を探す場合も、関数内で&&を使えば簡単に検索できます。これにより、配列操作がより柔軟かつ効率的になります。」

生徒

「オブジェクト配列でも使えるので、ユーザー情報を検索するときも便利ですね。」

先生

「はい、条件に応じてプロパティを参照すれば、特定のユーザーやデータを簡単に取得できます。find()とfindIndex()を活用することで、JavaScriptでの配列操作が格段に効率化されます。」

生徒

「これで配列検索の基本はばっちり理解できました。ありがとうございます!」

先生

「どういたしまして。実際に手を動かして試してみると、より理解が深まりますよ。」

カテゴリの一覧へ
新着記事
New1
JavaScript
JavaScriptのスコープとは?ローカル変数・グローバル変数の違いと使い分け
New2
TypeScript
TypeScriptで型の合成時に発生する型エラーの対処法を徹底解説!初心者にもわかりやすく解説
New3
TypeScript
TypeScriptでAPI呼び出しをラップするユーティリティ関数の設計完全ガイド!初心者向けにAxiosやFetchの使い方を解説
New4
TypeScript
TypeScriptのMapped Typesとインターフェースの連携方法を徹底解説!初心者でも理解できる型変換の基本
人気記事
No.1
Java&Spring記事人気No1
JavaScript
JavaScriptのループで無限ループが起きる原因と対策を初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
JavaScript
JavaScriptのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.3
Java&Spring記事人気No3
JavaScript
JavaScriptの文字列の長さを取得する(lengthプロパティ)
No.4
Java&Spring記事人気No4
TypeScript
TypeScriptのファイル分割とimport/exportの基本を徹底解説!初心者でも安心のやさしい入門
No.5
Java&Spring記事人気No5
TypeScript
TypeScriptでコメントを書く正しい書き方と使い分け【初心者向けにやさしく解説】
No.6
Java&Spring記事人気No6
JavaScript
JavaScriptのプリミティブ型と参照型の違いを初心者向けに解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptの始め方:開発環境の構築手順【初心者向け】
No.8
Java&Spring記事人気No8
TypeScript
TypeScriptでパスエイリアスを設定する方法!baseUrlとpathsでコードをスッキリ整理