Skip to content

differenceBy (Lodash 호환성)

es-toolkitdifferenceBy를 사용하세요

differenceBy 함수는 복잡한 인자 처리와 반복자 변환으로 인해 느리게 동작해요.

대신 더 빠르고 현대적인 es-toolkitdifferenceBy를 사용하세요.

반복자 함수로 변환한 값들을 기준으로 첫 번째 배열에서 다른 배열들의 요소를 제외한 차집합을 구해요.

typescript
const result = differenceBy(array, ...values, iteratee);

레퍼런스

differenceBy(array, ...values, iteratee)

첫 번째 배열의 각 요소와 제외할 배열들의 요소들을 반복자 함수로 변환한 후, 같은 값이 나오는 요소들을 제거하고 싶을 때 differenceBy를 사용하세요. 객체 배열에서 특정 프로퍼티 값이나 변환된 값을 기준으로 비교할 때 유용해요.

typescript
import { differenceBy } from 'es-toolkit/compat';

// 소수점 버림으로 비교
differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
// Returns: [1.2] (Math.floor(2.1) === Math.floor(2.3)이므로 2.1 제외)

// 문자열 길이로 비교
differenceBy(['one', 'two', 'three'], ['four', 'eight'], 'length');
// Returns: ['one', 'two'] (three와 eight은 길이가 같으므로 three 제외)

// 객체의 프로퍼티로 비교
const users1 = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
];
const users2 = [{ id: 1, name: 'Different Alice' }];
differenceBy(users1, users2, 'id');
// Returns: [{ id: 2, name: 'Bob' }] (id가 1인 객체 제외)

여러 배열을 한 번에 제외할 수 있어요.

typescript
import { differenceBy } from 'es-toolkit/compat';

// 여러 배열에서 제외
differenceBy([2.1, 1.2, 3.5], [2.3], [1.4], [3.2], Math.floor);
// Returns: [] (모든 요소가 제외됨)

// 문자열 배열에서 길이로 비교
differenceBy(['a', 'bb', 'ccc'], ['x'], ['yy'], ['zzz'], 'length');
// Returns: [] (길이 1, 2, 3 모두 제외됨)

반복자 함수가 없으면 일반 difference처럼 동작해요.

typescript
import { differenceBy } from 'es-toolkit/compat';

// 반복자 함수 없이 사용
differenceBy([1, 2, 3], [2, 4]);
// Returns: [1, 3]

null이나 undefined 배열은 빈 배열로 처리해요.

typescript
import { differenceBy } from 'es-toolkit/compat';

differenceBy(null, [1, 2], Math.floor);
// Returns: []

differenceBy(undefined, [1, 2], x => x);
// Returns: []

파라미터

  • array (ArrayLike<T> | null | undefined): 차집합을 구할 기준 배열이에요.
  • values (...ArrayLike<T>[]): 제외할 값들을 포함한 배열들이에요.
  • iteratee (ValueIteratee<T>): 각 요소를 비교할 값으로 변환하는 함수예요. 함수, 프로퍼티 이름, 또는 부분 객체를 사용할 수 있어요.

반환 값

(T[]): 반복자 함수로 변환한 값들을 기준으로 제외된 요소들을 뺀 새 배열을 반환해요.

MIT 라이선스에 따라 배포됩니다.