🔧

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 @types/lodash
yarn add lodash
yarn add -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
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 標準機能
clamp 数値を指定した範囲内に制限します。 lodash/clamp

配列操作

関数名 活用方法 パス JavaScript 標準機能
chunk 配列を指定したサイズのチャンクに分割します。 lodash/chunk
differenceWith カスタム比較関数を使用して 2 つの配列の差分を取得します。 lodash/differenceWith
filter 条件に一致する配列の要素をフィルタリングします。 lodash/filter Array.prototype.filter
findIndex 条件に一致する配列の最初の要素のインデックスを返します。 lodash/findIndex Array.prototype.findIndex
forEach 配列やオブジェクトの各要素に対して関数を実行します。 lodash/forEach Array.prototype.forEach
groupBy 配列の要素を指定したプロパティでグループ化します。 lodash/groupBy
intersection 2 つの配列の共通要素を抽出します。 lodash/intersection
keyBy 配列の要素を指定したプロパティでキーとしたオブジェクトに変換します。 lodash/keyBy
orderBy 配列の要素を指定したプロパティでソートします(昇順・降順を指定可能)。 lodash/orderBy
remove 配列から指定した条件に一致する要素を削除します。 lodash/remove
sortBy 配列の要素を指定したプロパティでソートします。 lodash/sortBy
takeRight 配列の末尾から指定した数の要素を取得します。 lodash/takeRight
toArray オブジェクトやその他の値を配列に変換します。 lodash/toArray Array.from
uniqBy 指定したプロパティで配列の重複を排除します。 lodash/uniqBy
uniqWith カスタム比較関数を使用して配列の重複を排除します。 lodash/uniqWith

さいごに

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

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

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

参考記事

GitHubで編集を提案

Discussion