최근 수정 시각 : 2026-01-15 11:32:42

lodash

[include(틀:소프트웨어 정보
, 이름 = Lodash
, 장르 = 라이브러리
, 개발 = John-David Dalton
, 발표 = 2012년
, 최신 버전 = 4.17.21
, 언어 = JavaScript
, 라이선스 = MIT 라이선스
, 사이트 = 공식 홈페이지
)]

1. 개요2. 특징3. Underscore.js와의 관계4. 주요 함수

1. 개요

Lodash(로대시)는 JavaScript의 유틸리티 라이브러리이다.

배열(Array), 숫자(Number), 객체(Object), 문자열(String) 등을 다루는 데 필수적인 함수들을 제공하며, 특히 JavaScript의 기본 내장 함수들이 부족했던 시절부터 개발자들의 가려운 곳을 긁어주며 사실상의 표준(De facto Standard) 유틸리티로 자리 잡았다.

원래는 Underscore.js의 복잡성을 줄이고 성능을 개선하기 위해 포크(Fork)되어 나온 프로젝트였으나, 현재는 원조보다 훨씬 더 널리 사용되며 npm 생태계에서 가장 많이 다운로드되는 패키지 중 하나가 되었다.

2. 특징

  • 성능 최적화: 초기 개발 당시 Underscore 대비 압도적인 성능 향상을 강조하며 등장했다.
  • 모듈화: 라이브러리 전체를 불러오지 않고, 필요한 함수만 골라서(`import map from 'lodash/map'`) 사용할 수 있어 번들 사이즈를 줄이는 데 유리하다.
  • 안전성: 깊은 객체 탐색 시 발생할 수 있는 `undefined` 에러 등을 방지하는 `_.get()` 같은 함수가 매우 유용하게 쓰인다.

3. Underscore.js와의 관계

나무위키의 언더스코어 문서에도 언급되어 있듯, Lodash는 언더스코어의 상위 호환을 지향하며 탄생했다. 초기에는 경쟁 관계였으나 Lodash가 시장을 장악하면서 사실상 세대교체가 이루어졌다. 문법이 거의 호환되지만, Lodash가 더 많은 기능과 최적화를 제공한다.

4. 주요 함수

  • `_.cloneDeep`: 객체의 깊은 복사(Deep Copy)를 수행한다. (JS 초보자들이 가장 많이 찾는 기능)
  • `_.debounce` / `_.throttle`: 스크롤이나 검색 입력 이벤트의 발생 빈도를 조절한다.
  • `_.get`: `obj.a.b.c` 처럼 깊은 depth의 속성을 안전하게 가져온다.
  • `_.sortBy`: 배열을 특정 기준에 따라 정렬한다.