Quantcast
Channel: 連想配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 129

[JS]連想配列に任意の値と等しい要素があれば、それらのインデックスを全て取ってくるサンプル~map編~

$
0
0

2019/07/21追記

コメント欄に、とても的確なご指摘を頂いております。
内容としては、

  • 今回はmapではなくforEachで書くべき
  • 偽を捨てるなら三項演算子じゃなくif文ワンライナーで良いのでは

とのことでした。
まさに、おっしゃられる通りですので、ぜひ皆様にもコメント欄を見てもらえればと思います。
また、その過程で本記事は、あえてそのまま残しておこうと思います。

いきなり結論コード

See the Pen 配列の一致インデックス取得map版 by riotam (@riotam4) on CodePen.

解説

キモになる部分
      let idx = []
      this.users.map((v,k) => v.gender == '' ? idx.push(k) : []) // ここはコメント欄で指摘を頂いております。そちらもご参照ください。
      return idx

まず、idxという変数を用意。
this.usersにデータが入っているので、それらをmapします。

mapメソッドの引数は、関数型で書く必要があり、アロー関数と三項演算子でワンライナーにしてしまってます。
要は、this.usersをv(value)とk(key)にして順番に呼び出す。
→そのvのgenderキーが'男'と等しければ、idx変数にpushしていく。そうじゃなければ、という感じ。

ちなみに

[]部分はnull''0など、falsyなものなら、挙動に問題はありません。

2019/07/21追記 : ここはコメント欄で指摘を頂いております。そちらもご参照ください。

最後に

さいごまでありがとうございました。

関連記事

同じ挙動のものをflatMapで作ってみました。こちら


Viewing all articles
Browse latest Browse all 129

Trending Articles