この記事ではJavaScriptの『findメソッド』について、
find
メソッドとはfind
メソッドの構文find
メソッドの使い方- 配列内のオブジェクトをプロパティの値で検索する
find
メソッドの特徴- 配列の先頭の要素からテスト関数を実行し、最初に見つかった要素を返す
- テスト関数を満たす要素が見つからない場合には、
undefined
を返す - テスト関数が一度でも該当の要素を見つければ、配列の反復処理が終了する
- 空のスロットは
undefined
と同じように扱われる
などをサンプルコードを用いて分かりやすく説明するように心掛けています。ご参考になれば幸いです。
findメソッドとは
find
メソッドは、配列内の要素に対してテスト関数を用いて検索し、最初に見つかった要素を返すメソッドです。
後ほどfind
メソッドの構文や使い方について詳しく説明しますが、まず以下に示す簡単なサンプルコードを見てみましょう。
const arr = [1, 2, 3, 4, 5];
const found = arr.find((element) => element > 2);
console.log(found);
// ログ出力
// 3
上記のサンプルコードでは、配列arr
の各要素に対してテスト関数を用いて検索し、最初に見つかった「2」より大きい要素(上記のサンプルコードでは「3」)を返しています。
補足
find
メソッドはES6(ECMAScript 2015)の仕様で追加されました。
findメソッドの構文
find
メソッドの構文を以下に示します。
findメソッドの構文
array.find(callbackFn[, thisArg])
array
は検索対象の配列です。find
メソッドの引数と返り値を以下に示します。
引数
callbackFn
- 配列の各要素に対して実行するテスト関数です。
- テスト関数には以下の引数を渡すことができます(第1引数の
element
のみを渡して使用することが多いです)。element
: テスト実行中の要素index
: テスト実行中の要素のインデックスarray
:find
メソッドでテストしている配列
thisArg
(省略可能)callbackFn
を実行する際にthis
として使用される値です。
返り値(戻り値)
- テスト関数(
callbackFn
)が見つけた最初の要素を返します。見つからなかった場合にはundefined
が返されます。
findメソッドの使い方
find
メソッドについて、以下に示している使い方をこれから説明します。
- 配列内のオブジェクトをプロパティの値で検索する
上記の使い方について順番に説明します。
配列内のオブジェクトをプロパティの値で検索する
以下のサンプルコードでは、persons
というオブジェクトの配列があります。find
メソッドは、id
プロパティが2であるオブジェクトを検索しています。結果として、該当する最初のオブジェクトが返されます。
const persons = [
{ id: 1, name: 'Taro', age: 30 },
{ id: 2, name: 'Hanako', age: 25 },
{ id: 3, name: 'Ken', age: 35 },
];
const foundPerson = persons.find((person) => person.id === 2);
console.log(foundPerson);
// ログ出力
// { id: 2, name: 'Hanako', age: 25 }
findメソッドの特徴
find
メソッドの特徴を以下に示します。
- 配列の先頭の要素からテスト関数を実行し、最初に見つかった要素を返す
- テスト関数を満たす要素が見つからない場合には、
undefined
を返す - テスト関数が一度でも該当の要素を見つければ、配列の反復処理が終了する
- 空のスロットは
undefined
と同じように扱われる
各特長について順番に説明します。
配列の先頭の要素からテスト関数を実行し、最初に見つかった要素を返す
find
メソッドは配列の先頭の要素からテスト関数を実行し、最初に見つかった要素を返します。サンプルコードを以下に示します。
const arr = [1, 2, 3, 4, 5];
const found = arr.find((element) => element > 2);
console.log(found);
// ログ出力
// 3
上記のサンプルコードから分かるように、テスト関数を満たす要素が複数存在する場合でも、find
メソッドでは最初に見つけた要素のみを返します。
テスト関数を満たす要素が見つからない場合には、undefinedを返す
find
メソッドはテスト関数を満たす要素が見つからない場合には、undefined
を返します。サンプルコードを以下に示します。
const arr = [1, 2, 3, 4, 5];
const found = arr.find((element) => element > 10);
console.log(found);
// ログ出力
// undefined
上記のサンプルコードは、10より大きい要素を検索していますが、そのような要素は配列内に存在しないため、undefined
を返しています。
テスト関数が一度でも該当の要素を見つければ、配列の反復処理が終了する
find
メソッドはテスト関数が一度でも該当の要素を見つければ、配列の反復処理が終了します。サンプルコードを以下に示します。
const arr = [1, 2, 3, 4, 5];
const found = arr.find((element) => {
console.log('number:', element);
return element > 2;
});
console.log(found);
// ログ出力
// number: 1
// number: 2
// number: 3
// 3
上記のサンプルコードでは、各要素についてコンソールにログを出力しています。3より大きい最初の数を見つけた後、配列の反復処理が終了していることが分かります。
空のスロットはundefinedと同じように扱われる
find
メソッドは空のスロットに対しても処理を実行します。その際、空のスロットはundefined
として扱われます。サンプルコードを以下に示します。
const arr = [1, , , , 5];
// すべての要素を表示
arr.find((element) => {
console.log('number:', element);
});
// ログ出力
// number: 1;
// number: undefined;
// number: undefined;
// number: undefined;
// number: 5;
上記のサンプルコードでは、各要素についてコンソールにログを出力しています。空のスロットはundefined
として扱われていることが分かります。
本記事のまとめ
この記事ではJavaScriptの『findメソッド』について、以下の内容を説明しました。
find
メソッドとはfind
メソッドの構文find
メソッドの使い方- 配列内のオブジェクトをプロパティの値で検索する
find
メソッドの特徴- 配列の先頭の要素からテスト関数を実行し、最初に見つかった要素を返す
- テスト関数を満たす要素が見つからない場合には、
undefined
を返す - テスト関数が一度でも該当の要素を見つければ、配列の反復処理が終了する
- 空のスロットは
undefined
と同じように扱われる
お読み頂きありがとうございました。