Lodashの_.chunk関数と_.partition関数の紹介

2017.04.28.金
JavaScript

20170427blog
tです。
今回は、JavaScriptのユーティリティライブラリである、Lodashについて書きます。

最近では、Lodashの機能も、JavaScriptに標準で用意されるようになりました。
例えば、Lodashの_.keys関数や_.some関数は、JavaScriptに標準で用意されています。

_.some関数Array.prototype.some()

Lodash JavaScript標準
_.keys関数 Object.keys()
しかし、Lodashにしかない関数も多くあります。今回は、使ってみて便利だった2つの関数を、例を交えながら紹介します。

実行環境

例に挙げるコードは、以下の環境で動作確認しています。
  • Node v7.9.0
  • Lodash v4.17.4

_.chunk関数

_.chunk関数は、配列の要素を一定の要素数ごとに分ける関数です。
大量の要素を少しずつ処理したい場合に、一定数ごとに分けることができるので便利です。

基本的な使い方

3要素ごとに分けられていることが分かります。

ユーザデータを100件ずつサーバに送信する場合

大量のユーザデータがあり、それを分割してサーバに送信する例を挙げています。
1万件など大量のデータを送信する時、ネットワークに負荷を与えないように、何件か区切りでデータを送信することがあるかと思います。そういう時に、簡単に分割できるので便利です。

サーバに送信する場合は、Fetch APIなど、Promiseを返す非同期関数が利用されることが多いかと思います。
なのでそれを想定し、async functionとfor...ofを組み合わせて、sendData関数を逐次実行しています。

_.partition関数

_.partition関数は、条件によって、配列を2つのグループに分ける関数です。
LodashのCollectionのショートハンドについてで紹介した、ショートハンドが利用できる関数です。

基本的な使い方

年齢によって2つのグループに分けています。
戻り値は、2つの配列で構成される配列になります。
前の配列にtrueを返した要素、後の配列にfalseを返した要素が含まれます。

_.partition関数を使ったほうが良い場合

_.filter関数と_.reject関数を使っている場面で、_.partition関数に置き換えられる場合を紹介します。

先に_.filter関数で抽出している箇所に、後から手を加えて、_.filter関数で抽出した逆の条件の要素も使いたい場合、_.reject関数を使いがちです。
しかし、_.filterと_.rejectを同じ条件で実行するのではなく、_.partition関数を使えば、一度の処理で、2つのグループを抽出できます。

最後に

LodashのCollectionのショートハンドについてに引き続き、Lodashの紹介でした。
Lodashには、とても多くのユーティリティメソッドが含まれています。
知っていると便利に使えるので、一度Lodash Documentsに目を通してみてください。

キー・ポイントでは、いろいろなライブラリを使いこなすエンジニアを募集しています。