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?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-07-04

2019/07/21追記

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

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

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

いきなり結論コード

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

# 解説 ```javascript:キモになる部分 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で作ってみました。こちら

0
0
2

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?