[javascript] Lodash의 클론 함수들과 사용 예제
Lodash는 자바스크립트 유틸리티 라이브러리로, 다양한 기능들을 제공합니다. 그 중에서도 클론(clone)과 관련된 함수들은 매우 유용합니다. 클론 함수들은 객체나 배열을 깊은 복사(deep copy)하거나 얕은 복사(shallow copy)할 때 사용됩니다. 이번 글에서는 Lodash의 주요 클론 함수들과 간단한 사용 예제들을 살펴보겠습니다.
1. _.cloneDeep
_.cloneDeep
함수는 객체나 배열을 깊은 복사하여 새로운 객체나 배열을 생성합니다. 원본 객체나 배열의 모든 값을 재귀적으로 복사하므로, 원본과 완전히 독립된 새로운 객체 또는 배열을 얻을 수 있습니다.
사용 예제:
const originalObject = { name: "John", age: 30, address: { city: "New York", country: "USA" } };
const clonedObject = _.cloneDeep(originalObject);
// clonedObject를 수정해도 originalObject는 영향을 받지 않음
clonedObject.name = "Michael";
clonedObject.address.city = "Los Angeles";
console.log(originalObject); // { name: "John", age: 30, address: { city: "New York", country: "USA" } }
console.log(clonedObject); // { name: "Michael", age: 30, address: { city: "Los Angeles", country: "USA" } }
2. _.clone
_.clone
함수는 객체나 배열을 얕은 복사하여 새로운 객체나 배열을 생성합니다. 원본 객체나 배열의 최상위 값들만 복사하므로, 내부 객체나 배열은 참조로 유지됩니다.
사용 예제:
const originalArray = [1, 2, 3, [4, 5]];
const clonedArray = _.clone(originalArray);
// clonedArray를 수정하면 originalArray도 영향을 받음
clonedArray.push(6);
console.log(originalArray); // [1, 2, 3, [4, 5], 6]
console.log(clonedArray); // [1, 2, 3, [4, 5], 6]
3. _.cloneDeepWith
_.cloneDeepWith
함수는 깊은 복사를 수행하되, 사용자 정의 로직을 적용할 수 있습니다. 사용자 정의 로직을 통해 특정 형식의 데이터를 수정하거나 무시할 수 있습니다.
사용 예제:
const originalObject = { name: "John", age: 30, password: "secret" };
const clonedObject = _.cloneDeepWith(originalObject, (value) => {
if (typeof value === "string") {
return value.toUpperCase();
}
return undefined; // password 필드를 무시
});
console.log(originalObject); // { name: "John", age: 30, password: "secret" }
console.log(clonedObject); // { name: "JOHN", age: 30 }
Lodash의 클론 함수들은 복사 작업을 간편하게 처리할 수 있도록 도와줍니다. 프로젝트에서 객체나 배열을 복사해야 할 경우에는 Lodash의 클론 함수들을 활용해보세요.
더 자세한 내용은 Lodash 공식 문서를 참고하시기 바랍니다.