0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[JavaScript][Instance Methods] findメソッドとは

Posted at

概要

find() は Array インスタンスのメソッドで、与えられた関数を配列の各要素に対して順に実行し、条件を満たす最初の要素を返すメソッドです。
条件を満たす要素が存在しない場合は undefined を返します。
mdn web docs

つまり、
配列の中から「条件に一致する最初の1要素」を探し出して返すメソッドです。
このメソッドは、元の配列を変更せず、要素(または undefined)を返します。

目次

基本構文

配列 numbers の中から、3より大きい最初の要素を取得しています。

const numbers = [1, 2, 3, 4, 5];

const result = numbers.find(num => num > 3);

console.log(result);

// 出力結果 4
  • 条件に一致する要素が見つかった時点で探索を終了
  • 見つからない場合は undefined を返す

for...of文とfindメソッドの比較

for...of

const numbers = [1, 2, 3, 4, 5];
let result;

for (const num of numbers) {
  if (num > 3) {
    result = num;
    break;
  }
}

console.log(result);

// 出力結果 4

findメソッド

const numbers = [1, 2, 3, 4, 5];

const result = numbers.find(num => num > 3);

console.log(result);

// 出力結果 4

比較結果

コードの簡潔さ

  • for...of
    条件分岐や break の記述が必要で、やや手続き的です。
  • findメソッド
    「探す条件」を関数として渡すだけで、コードが簡潔になります。

不変性

  • for...of
    外部変数への代入が必要で、状態管理に注意が必要です。
  • findメソッド
    元の配列を変更せず、結果のみを返します。

関数型プログラミングのスタイル

  • for...of
    命令型(どのように探すかを逐一記述)
  • findメソッド
    宣言型(「何を探すか」を記述)

活用例

オブジェクト配列から特定データを取得する例

配列 members の中から、id3 の要素を取得しています。

const members = [
  { id: 1, name: "Aileen" },
  { id: 2, name: "Bob" },
  { id: 3, name: "Cindy" },
  { id: 4, name: "David" }
];

const member = members.find(item => item.id === 3);

console.log(member);

// 出力結果 { id: 3, name: "Cindy" }

このように find は、

  • 配列の中から 1件だけ取得したい
  • filter のように配列で返す必要がない

といったケースに適しています。

参考リンク

CodeWars

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?