PHPでコレクションを使っていますが、慣れると本当に便利ですね・・・まあforeachとかでグリグリやってもいいのですが、無駄にコードが長くなります。
自分がコレクションでよく使う再頻出のメソッドなどを。(メソッド名はLaravelのものを使っていますが、似たものは大概他のフレームワークでもあるかと思います。)
map
配列の中の変換作業を行います。単純に配列の中身をいじる時や新たな配列を作りたい時など、シンプルなだけに使用頻度は高めです。
groupBy
使用頻度はかなり高いです。例えば売上伝票データがあってそれを顧客ごと、担当者ごと、月ごとにまとめたい時などは大概これを使います。
使えないときは一生懸命、foreachでグルグル回しながらやってましたね・・・
複数キー(月+顧客ごと)の場合でも大概文字列を結合させてかけることが一般的です。多段の場合はgroupByした後にmapのなかでさらにgroupByを使います。
mapなどと違ってforeachではかなり面倒臭いので早い段階で覚えておきたいメソッドです。
pluck
あるプロパティだけを抽出させたいときに使います。
例えば
1 2 3 4 5 |
$member = [ 'name' => '', 'age' => '', 'pref'=> '' ] |
みたいなデータがあったときにnameだけ、ageだけを取り出したいといったようなケースです。
ちなみにLaravelでは2つの引数を指定すると、片方をインデックス番号、もう片方を値にしてくれるので、プルダウンなどの値を作るときに非常に重宝します。
filter
特定の値のみを抽出します。例えばstatus=10の伝票のみを抽出して売上を計算したい場合などはこのメソッドが使えます。逆のrejectなども稀に使います。
keyBy
多次元連想配列を使っているときに配列のインデックス番号を数字ではなく連想配列の特定のキーに置き換えたいときに使います。ハッシュで操作をしたい場合などはかなりよくあるケースなので、使えます。
flatten
多段階層になっているときに下の階層のデータをまとめて取りたいとき。
参考リンク
基本的な使用法は下記にのっています。
https://laravel.com/docs/5.6/collections
他の言語やフレームワークを使う場合でもまずこれらを押さえておけば、基本的な処理は困らないのではないかと。