JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【初心者向け】JavaScriptのfind()メソッドで特定のレコードを検索する方法を解説

JavaScriptで配列の中から特定の条件に一致するレコード(オブジェクト)を1件だけ取得したい場合、find()メソッドを使うのが最もシンプルで効率的な方法です。

find()メソッドは、引数として渡したコールバック関数の条件を満たす最初の要素を返します。該当する要素が見つからない場合はundefinedが返されるため、検索結果の有無を判定する処理にも活用できます。

サンプルコード

以下は、学生情報の配列からstudentIdが102のレコードを検索する例です。

var obj = [
  {
    studentId: 101,
    studentName: "John"
  },
  {
    studentId: 102,
    studentName: "Bob"
  },
  {
    studentId: 103,
    studentName: "David"
  }
];

const result = obj.find(
  (o) => {
    return o.studentId === 102;
  }
);
console.log(result);

このプログラムでは、アロー関数で各要素(o)を受け取り、o.studentId === 102という条件式で一致判定を行っています。一致した最初の要素だけが結果として返されます。

実行方法

Node.js環境で上記のプログラムを実行するには、以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名を「demo315.js」として保存しているものとします。

実行結果

上記のコマンドを実行すると、コンソールには次のように出力されます。

PS C:\Users\Amit\javascript-code> node demo315.js
{ studentId: 102, studentName: 'Bob' }

このように、studentIdが102である「Bob」のレコードが正しく取得できていることが確認できます。

find()メソッドのポイント

  • 条件に一致する最初の1件のみを返す(複数件ヒットしても最初の要素だけ)
  • 見つからない場合はundefinedを返す
  • 元の配列は変更されない(非破壊的メソッド)
  • filter()との違い:filter()は一致するすべての要素を配列で返し、find()は最初の1件のみを返す

大量のデータから特定の1件を高速に取り出したい場面で、find()メソッドは非常に便利です。ぜひ活用してみてください。

  1. JavaScriptのgenerator.throw()メソッドの使い方を解説

    ```html generator.throw()メソッドとはgenerator.throw()メソッドは、一時停止中のyield式に対してエラーを送出するためのメソッドです。throw()が呼び出されると、ジェネレーターはあたかもyieldの位置で例外が発生したかのように実行を再開し、doneとvalueという2つのプロパティを持つオブジェクトを返します。このメソッドを使うと、ジェネレーターの外部から内部へ例外を注入できます。ジェネレーター内にtry...catchブロックが存在すれば、throw()で渡されたエラーはそのcatchブロックで捕捉されます。逆にcatchブロックがない場合は、

  2. JavaScriptでオブジェクトにreduceメソッドを適用する方法

    JavaScriptのreduce()メソッドは本来配列向けのメソッドのため、オブジェクトにそのまま適用することはできません。そこで、Object.values()メソッドを使ってオブジェクトの値を配列として取り出し、その配列に対してreduce()を適用します。 以下は、JavaScriptでオブジェクトの値にreduceメソッドを適用するコード例です。 コード例 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8 /> <meta name=viewport content