[javascript] Underscore.js에서 제공하는 객체 함수들 중에서 객체 비교하는 함수는 어떤 게 있나요?

Underscore.js는 JavaScript 프레임워크로, 다양한 유용한 함수들을 제공하여 객체와 배열 관리를 좀 더 쉽게 할 수 있게 도와줍니다. 객체 비교에 사용할 수 있는 몇 가지 함수를 살펴보겠습니다.

  1. 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
  1. 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
  1. 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에는 다양한 유용한 객체 함수들이 있으니 필요에 따라 문서를 참조하시기 바랍니다. 공식 문서를 확인해보세요.