LoginSignup
23
26

More than 5 years have passed since last update.

【JavaScript】【for文駆逐作戦】findメソッドの使い方

Last updated at Posted at 2019-01-23

この記事の内容

  • javaScriptのES6で正式採用された「find」の使い方について
  • for文は駆逐していく方針

なぜ駆逐するのか

  • 読みづらいし、ナウくないから。
  • 単純にfindって書かれてたら、「何か探してんだな」って他の人が気付きやすい(可読性UP↑)

さっそく書き方

いつもの「for文」

var users = [
    { name : 'コーヒー' },
    { name : '紅茶', id : 1},
    { name : '緑茶' },
    { name : '紅茶', id : 10}
 ];

var user ;

for (var i = 0;  i < users.length; i++) {
  if ( users[i].name === '紅茶') {
    user = users[i];
    break;
  }
}

console.log(user); //{ name : '紅茶', id : 1}

  • for文の中でif文で条件判定し、空の変数に格納している
  • ↑ってみると本当はただ検索したいだけなのに、、大層なことやってるでって感じがする😇
  • breakしてるけど、もし検索したいワードが配列の最後にあったら、、そこまでfor文を回さないといけない。(時間かかるよね)

最新の「find文」

var users = [
    { name : 'コーヒー' },
    { name : '紅茶', id : 1},
    { name : '緑茶' },
    { name : '紅茶', id : 10}
 ];

var result = users.find(function(user){
  return user.name === '紅茶'
});

console.log(result); //{"name":"紅茶", id = 1}

もういっこfind文(プチ応用)

var drinks = [
    { id : 1, name : 'コーヒー' },
    { id : 2, name : '紅茶'},
    { id : 3, name : '緑茶'},
    { id : 4, name : ''}
 ];

var drinkTaste = {drinkId : 2, Taste : 'good'}

// DrinkInfoのfunctionを定義する
function DrinkInfo(drinks, drinkTaste){
    return drinks.find(function(drink){
      return drink.id === drinkTaste.drinkId;
  });
}

 console.log(DrinkInfo(drinks, drinkTaste));
 //{id: 2, name: "紅茶"}

2つのオブジェクトを比較して、findしてる。
こちらの方がちょっぴり実用的な感じがしますね。

補足 (findの特徴)

  • コールバック関数の戻り値は、「true」か「false」を返す
  • 「true」だった場合、要素が配列に入る!
  • そもそも「return」を忘れてはいけない
  • 1番最初に見つかった時点で、検索を終了する。

まとめ

  • 基本的にはfunctionの中で使うことが多そうです。
  • そして複数のプロパティを比較して、取り出しを自由自在にすることが、真のJavaScripterになるということと悟りました。

独り言

  • SPA(Single Page Application)でよく使われるってどこかで聞いたことがあります。
  • ここら辺も覚えて記事にしていきたいですね。
23
26
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
23
26