👨⚖️
lodashの代わりにjustを使う
なるべくlodashを使わず標準の機能で済まそうとしている[^1]が、どうしても標準だと面倒で欲しくなるケースがある。
例えば1つの配列をn個に分ける_.chunk
などはちょうどよいだろう。
You Dont Need Lodash Underscoreを参考に自前実装すると最低でもこのぐらいは必要だ。
const chunk = (input, size) =>
input.reduce((arr, item, idx) => idx % size === 0
? [...arr, [item]]
: [...arr.slice(0, -1), [...arr.slice(-1)[0], item]]
, []);
chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
justを使う
そこで探してみるとjustという関数群ライブラリがあるので紹介してみたい。
特徴
- パッケージは
just-***
という名前で単関数が独立している。必要なものだけ使える - zero-dependencyな作り。
- 比較的簡素に作られているので自前実装に参考にしやすい
例
例えば上記の_.chunk
の場合でいうとjust-splitが対応する。
justはすべてのパッケージがそれぞれ分離されているので、just-split
をインストールする
$ npm install just-split
あとはほとんど_.chunk
と同じような関数が利用できる。
import split from "just-split"
split([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)
// [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
また、justの場合はコードも下記のように独立しており簡素なため、「パッケージを入れるほどではないから自前に引っ張ってこよう」という場合も参考にしやすいだろう。
lodashは内部でお互いのコードに依存していたりするので、持ってくるにはちょっと参考にしづらい
同様ramdaなどもあるが、こちらもsplitEveryを見てみるとそこそこ内部で依存していて参考にはしづらい
Discussion