LoginSignup
2
1

More than 3 years have passed since last update.

ES2019 の flatMap は何に使うのか

Last updated at Posted at 2019-06-07

Meguro.es # 21 @ ビザスク で紹介されていた ES2019 の flatMap の具体的な用途がパっと思いつかず、少し調べたり聞いたりしてみました。

ちなみに flatMap は IE や Edge 以外のブラウザではすでに使えますが、まだ Stage3 のプロポーザルです。(2019/06/07現在)
Array.prototype.flatMap & Array.prototype.flat (公式ドキュメント)
スクリーンショット 2019-06-07 14.31.32.png

flat & flatMap array methods - Can I use
スクリーンショット 2019-06-07 14.26.36.png

flatMap とは

Array.prototype.mapArray.prototype.flat の合わせ技。

[1, 2, 3].flatMap(x => [x, x, x]); // [1, 1, 1, 2, 2, 2, 3, 3, 3]
// 以下でも同じ結果になる --> [1, 2, 3].map(x => [x, x, x]).flat();

どんなときに使うのか考えてみた

flatMap を使えば、ある Array の各値をチョキチョキして新しい Array をたくさん作り、できた Array たちを1つの Flat な Array にできる。

例えば、売れ筋商品の購入者一覧を取り出すとか。

const targetUsers = popularItems.flatMap(item => item.buyers);
// 実際に使うときは User ID などの Array に変換してから重複するユーザーを削除したりが必要かも

例えば、その購入者のウィッシュリストにある商品一覧を取り出すとか。

const wishListItems = targetUsers.flatMap(user => user.wishLists.flatMap(list => list.items));
// 実際に使うときは(ry

まとめ

結構いろんな場面で活躍しそう。
意識して使うというよりは map(func).flat() みたいなコードを見つけたら flatMap にリファクタリングして効率良く処理してもらおう!みたいな感じでしょうか。

他にもこんな使い方できそう(した)とかがあればコメントをもらえると嬉しいです。

2
1
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
2
1