본문 바로가기
FrontEnd

lodash 사용법 및 유용 기능 총 정리

by 재성스 2025. 2. 5.
반응형

Lodash는 JavaScript에서 자주 사용되는 배열, 객체, 문자열, 함수 등을 다루기 위한 유틸리티 라이브러리이다.

배열 정리, 객체 병합, 깊은 복사(Deep Clone), 데이터 필터링, 성능 최적화 등의 작업을 쉽게 처리할 수 있도록 도와준다.

1. Lodash 설치

더보기

Lodash를 사용하려면 npm 또는 CDN을 통해 설치할 수 있다.

1️⃣ npm을 이용한 설치

npm install lodash

2️⃣ ES6 import 방식으로 사용

import _ from 'lodash';

3️⃣ CDN을 이용한 브라우저에서 사용

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>

2. 배열 관련 함수

더보기

 

1️⃣ _.chunk - 배열을 일정한 크기로 나누기

const array = [1, 2, 3, 4, 5, 6];

console.log(_.chunk(array, 2));
// 결과: [[1, 2], [3, 4], [5, 6]]
 
  • 배열을 지정한 크기로 나눠서 새로운 배열을 생성

2️⃣ _.difference - 두 배열의 차집합 구하기

const array1 = [1, 2, 3, 4];
const array2 = [2, 4];

console.log(_.difference(array1, array2));
// 결과: [1, 3]​
  • 첫 번째 배열에서 두 번째 배열에 존재하는 요소를 제거한 결과를 반환

3️⃣ _.uniq - 배열의 중복 요소 제거

const array = [1, 2, 2, 3, 4, 4, 5];

console.log(_.uniq(array));
// 결과: [1, 2, 3, 4, 5]
  • 배열에서 중복된 요소를 제거하고 새로운 배열을 반환

4️⃣ _.flatten - 다차원 배열을 평탄화

const nestedArray = [1, [2, [3, [4]], 5]];

console.log(_.flatten(nestedArray));
// 결과: [1, 2, [3, [4]], 5]

console.log(_.flattenDeep(nestedArray));
// 결과: [1, 2, 3, 4, 5]
 
  • _.flatten()은 1단계만 평탄화,
  • _.flattenDeep()은 모든 중첩 배열을 평탄화

3. 객체 관련 함수

더보기

1️⃣ _.cloneDeep - 객체 깊은 복사

const obj = { a: 1, b: { c: 2 } };

const clone = _.cloneDeep(obj);
clone.b.c = 99;

console.log(obj.b.c); // 결과: 2 (원본 객체가 변경되지 않음)
console.log(clone.b.c); // 결과: 99
  • _.cloneDeep()을 사용하면 객체 내부의 중첩된 값까지 새로운 객체로 복사

2️⃣ _.merge - 객체 병합

const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { b: { d: 3 }, e: 4 };

console.log(_.merge(obj1, obj2));
// 결과: { a: 1, b: { c: 2, d: 3 }, e: 4 }
  • 객체를 재귀적으로 병합
  • 중첩된 객체의 속성이 덮어쓰여짐

3️⃣ _.pick & _.omit - 특정 키만 선택 또는 제외

const user = { id: 1, name: 'Alice', role: 'admin', age: 25 };

console.log(_.pick(user, ['id', 'name']));
// 결과: { id: 1, name: 'Alice' }

console.log(_.omit(user, ['role', 'age']));
// 결과: { id: 1, name: 'Alice' }
  • _.pick() : 필요한 속성만 선택
  • _.omit() : 특정 속성을 제외

4. 컬렉션 관련 함수 (배열 + 객체)

Lodash는 배열과 객체를 쉽게 순회하고 데이터를 변환할 수 있도록 도와줌

더보기

1️⃣ _.map - 배열 또는 객체를 변환

 
const users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];

console.log(_.map(users, 'name'));
// 결과: ['Alice', 'Bob']
  • 배열을 순회하며 특정 속성 값을 추출하거나 변환

2️⃣ _.filter - 조건에 맞는 요소 필터링

const users = [
  { id: 1, name: 'Alice', active: true },
  { id: 2, name: 'Bob', active: false },
  { id: 3, name: 'Charlie', active: true }
];

console.log(_.filter(users, { active: true }));
// 결과: [{ id: 1, name: 'Alice', active: true }, { id: 3, name: 'Charlie', active: true }]
  • _.filter()는 특정 조건을 만족하는 요소만 반환

3️⃣ _.find - 조건을 만족하는 첫 번째 요소 찾기

const users = [
  { id: 1, name: 'Alice', active: true },
  { id: 2, name: 'Bob', active: false }
];

console.log(_.find(users, { active: false }));
// 결과: { id: 2, name: 'Bob', active: false }​
  • _.find()는 조건을 만족하는 첫 번째 요소를 반환

5. 성능 최적화 함수

Lodash는 성능을 최적화할 수 있는 함수도 제공

더보기

1️⃣ _.debounce - 이벤트 호출 제한

 
const handleResize = _.debounce(() => {
  console.log('Resized!');
}, 300);

window.addEventListener('resize', handleResize);
  • resize 이벤트가 연속으로 발생할 경우, 마지막 이벤트만 실행
  • 사용 예: 검색 입력 자동완성, 버튼 연속 클릭 방지 등

2️⃣ _.throttle - 일정 시간마다 실행

const handleScroll = _.throttle(() => {
  console.log('Scrolling...');
}, 1000);

window.addEventListener('scroll', handleScroll);
  • 지정된 시간 동안 한 번만 실행되도록 제한
  • 사용 예: 무한 스크롤, 스크롤 이벤트 최적화 등

정리

기능 함수 설명
배열 조작 _.chunk 배열을 일정 크기로 나눔
  _.difference 두 배열의 차이 계산
  _.uniq 중복 요소 제거
객체 조작 _.cloneDeep 깊은 복사
  _.merge 객체 병합
  _.pick, _.omit 특정 속성 선택 또는 제외
컬렉션 _.map, _.filter, _.find 데이터 변환 및 필터링
성능 최적화 _.debounce 연속 호출 방지
  _.throttle 일정 주기로 실행
반응형