[javascript] Underscore.js에서 제공하는 객체 함수들 중에서 객체 비교하는 함수는 어떤 게 있나요?
Underscore.js는 JavaScript 프레임워크로, 다양한 유용한 함수들을 제공하여 객체와 배열 관리를 좀 더 쉽게 할 수 있게 도와줍니다. 객체 비교에 사용할 수 있는 몇 가지 함수를 살펴보겠습니다.
- isEqual(obj1, obj2) 이 함수는 두 객체(obj1, obj2)가 동일한 값을 가지고 있는지를 비교합니다. 객체 내부의 값들을 재귀적으로 비교하여 동일한지 여부를 판단합니다.
예제 코드:
const obj1 = { name: 'Alice', age: 30 };
const obj2 = { name: 'Alice', age: 30 };
const obj3 = { name: 'Bob', age: 25 };
console.log(_.isEqual(obj1, obj2)); // true
console.log(_.isEqual(obj1, obj3)); // false
- isMatch(obj, properties) 이 함수는 주어진 객체(obj)가 지정된 속성(properties)을 가지고 있는지 여부를 확인합니다. 객체가 모든 속성을 가지고 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
예제 코드:
const person = { name: 'Alice', age: 30, gender: 'female', country: 'USA' };
console.log(_.isMatch(person, { name: 'Alice', age: 30 })); // true
console.log(_.isMatch(person, { name: 'Bob', age: 25 })); // false
console.log(_.isMatch(person, { country: 'USA' })); // true
- isMatchWith(obj, source, customizer) 이 함수는 사용자 정의 비교 함수(customizer)를 제공하여 두 객체(obj, source)를 비교합니다. 비교 함수를 통해 커스텀 로직을 적용할 수 있습니다. 객체가 서로 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
예제 코드:
const obj1 = { name: 'Alice', age: 30 };
const obj2 = { name: 'Bob', age: 25 };
// 커스텀 비교 함수
const customizer = (value, other) => {
if (typeof value === 'string' && typeof other === 'string') {
return value.toLowerCase() === other.toLowerCase();
}
return undefined; // 기본 동작 사용
};
console.log(_.isMatchWith(obj1, obj2, customizer)); // false
이 외에도 Underscore.js에는 다양한 유용한 객체 함수들이 있으니 필요에 따라 문서를 참조하시기 바랍니다. 공식 문서를 확인해보세요.