🔧

Lodashで使える便利な関数と代替可能なJavaScriptの標準機能

2024/06/09に公開

はじめに

この記事は、個人開発するにあたり、参考にするコードでよく見かけるLodashがどんなものか気になったため、使われていた関数をまとめてみました。

個人的なメモも兼ねていますので、便利なものがあれば追加していこうと思っています。

Lodash とは?

Lodashとは、JavaScriptで作業を効率化するためのユーティリティライブラリです。多くの一般的なプログラミングタスクを簡単に実行できるようにするための関数群を提供しています。

https://lodash.com/

インストール

CDN

https://www.jsdelivr.com/package/npm/lodash

Node.js

npm install --save lodash
npm install --save-dev @types/lodash
yarn add lodash
yarn add -D @types/lodash
pnpm install lodash
pnpm install -D @types/lodash

インポート

CDNの場合は基本的にフルインポートになりますが、Node.jsの場合、インポートの方法によってバンドルサイズを抑えられるため、部分的にLodashの関数を利用する場合は個別機能インポートを活用するといいそうです。

フルインポート

const _ = require("lodash");
import _ from "lodash";

分割インポート ( バンドルサイズはフルインポートと同じ )

const { isEqual } = require("lodash");
import { isEqual } from "lodash";

個別機能インポート

const isEqual = require("lodash/isEqual");
import isEqual from "lodash/isEqual";

Lodash 関数

オブジェクト操作

関数名 活用方法 パス JavaScript 標準機能
assign オブジェクトにプロパティをコピーします。 lodash/assign Object.assign
cloneDeep オブジェクトや配列を深くコピーします。ネストされた構造も保持します。 lodash/cloneDeep
get オブジェクトのプロパティ値を取得し、存在しない場合はデフォルト値を返します。 lodash/get
isEmpty 値が空かどうかを判定します(オブジェクト、配列、文字列など)。 lodash/isEmpty
isEqual 2 つの値を深く比較し、等しいかどうかを判定します。 lodash/isEqual
isEqualWith カスタム比較関数を使用して 2 つの値を深く比較します。 lodash/isEqualWith
mapValues オブジェクトのプロパティ値を変換します。 lodash/mapValues
merge 2 つ以上のオブジェクトをマージします。ネストされたプロパティもマージします。 lodash/merge
omit オブジェクトから指定したプロパティを除外します。 lodash/omit
pick オブジェクトから指定したプロパティだけを抽出します。 lodash/pick
pickBy 条件に一致するプロパティを持つオブジェクトのプロパティを抽出します。 lodash/pickBy
toPairs オブジェクトのキーと値をペアにした配列を作成します。 lodash/toPairs
values オブジェクトの値を配列として取得します。 lodash/values Object.values

関数操作

関数名 活用方法 パス JavaScript 標準機能
bind 関数にコンテキスト(this)をバインドします。 lodash/bind Function.prototype.bind
debounce 関数の呼び出しを遅延させ、指定した時間内に再度呼ばれた場合はその時間をリセットします。 lodash/debounce
memoize 関数の結果をキャッシュし、同じ引数で呼び出された場合にキャッシュを返します。 lodash/memoize
once 関数を一度だけ実行します。 lodash/once
throttle 関数の呼び出し頻度を制限し、指定した時間内に一度だけ実行します。 lodash/throttle

文字列操作

関数名 活用方法 パス JavaScript 標準機能
camelCase 文字列をキャメルケースに変換します。 lodash/camelCase
escape HTMLエスケープを行います。 lodash/escape
escapeRegExp 正規表現の特殊文字をエスケープします。 lodash/escapeRegExp
unescape HTMLエスケープを解除します。 lodash/unescape
upperFirst 文字列の最初の文字を大文字にします。 lodash/upperFirst

数値操作

関数名 活用方法 パス JavaScript 標準機能
clamp 数値を指定した範囲内に制限します。 lodash/clamp
max 配列の最大値を取得します。 lodash/max Math.max

配列操作

関数名 活用方法 パス JavaScript 標準機能
chunk 配列を指定したサイズのチャンクに分割します。 lodash/chunk
difference 2 つの配列の差分を取得します。 lodash/difference
differenceWith カスタム比較関数を使用して 2 つの配列の差分を取得します。 lodash/differenceWith
fill 配列を指定した値で埋めます。 lodash/fill
filter 条件に一致する配列の要素をフィルタリングします。 lodash/filter Array.prototype.filter
findIndex 条件に一致する配列の最初の要素のインデックスを返します。 lodash/findIndex Array.prototype.findIndex
flatten 配列を1階層だけ平坦化します。 lodash/flatten Array.prototype.flat
flattenDeep 配列を完全に平坦化します。 lodash/flattenDeep Array.prototype.flat
forEach 配列やオブジェクトの各要素に対して関数を実行します。 lodash/forEach Array.prototype.forEach
groupBy 配列の要素を指定したプロパティでグループ化します。 lodash/groupBy
intersection 2 つの配列の共通要素を抽出します。 lodash/intersection
keyBy 配列の要素を指定したプロパティでキーとしたオブジェクトに変換します。 lodash/keyBy
last 配列の最後の要素を取得します。 lodash/last Array.prototype.at
orderBy 配列の要素を指定したプロパティでソートします(昇順・降順を指定可能)。 lodash/orderBy
range 指定範囲の数値配列を生成します。 lodash/range
remove 配列から指定した条件に一致する要素を削除します。 lodash/remove
sortBy 配列の要素を指定したプロパティでソートします。 lodash/sortBy
shuffle 配列をシャッフルします。 lodash/shuffle
takeRight 配列の末尾から指定した数の要素を取得します。 lodash/takeRight
times イテレータを指定回数呼び出し処理結果の配列を生成します。 lodash/times
toArray オブジェクトやその他の値を配列に変換します。 lodash/toArray Array.from
uniq 配列の重複を排除します。 lodash/uniq
uniqBy 指定したプロパティで配列の重複を排除します。 lodash/uniqBy
uniqWith カスタム比較関数を使用して配列の重複を排除します。 lodash/uniqWith

テンプレート操作

関数名 活用方法 パス JavaScript 標準機能
template 文字列テンプレートを処理します。 lodash/template

代替候補について

ES5やES6で機能が追加されたことにより、LodashやUnderscoreを使わなくても標準機能のみで簡潔に書ける場合があるそうですので、ご興味がありましたらこちらも参照してみてください!

https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore

さいごに

今回紹介した関数を使用することで少しでもみなさんの作業効率に繋がればと思いますのでぜひ使用してみたご感想などをお聞かせ頂けると嬉しいです!

また、ここに掲載されている関数以外にもLodashで便利な関数が御座いましたらご教示頂けますと幸いです。

最後まで拙い文章でしたがお付き合い頂きありがとうございました。

参考記事

GitHubで編集を提案

Discussion