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で作ってみました。こちら