intersectionBy (Lodash 호환성)
es-toolkit의 intersectionBy를 사용하세요
이 intersectionBy 함수는 복잡한 조건 처리, 다중 배열 지원, 프로퍼티 경로 해석 등으로 인해 느리게 동작해요.
대신 더 빠르고 현대적인 es-toolkit의 intersectionBy를 사용하세요.
주어진 조건 함수를 사용해서 여러 배열의 교집합을 구해요.
typescript
const result = intersectionBy(...arrays, iteratee);레퍼런스
intersectionBy(...arrays, iteratee)
여러 배열에서 각 요소를 주어진 조건 함수로 변환한 값을 기준으로 교집합을 구해요. 조건은 함수, 프로퍼티 이름, 부분 객체 등 다양한 형태로 제공할 수 있어요.
typescript
import { intersectionBy } from 'es-toolkit/compat';
// 함수로 교집합 구하기
const array1 = [2.1, 1.2];
const array2 = [2.3, 3.4];
const result = intersectionBy(array1, array2, Math.floor);
// result는 [2.1] (Math.floor 기준으로 2가 공통)
// 프로퍼티로 교집합 구하기
const users1 = [
{ id: 1, name: 'john' },
{ id: 2, name: 'jane' },
];
const users2 = [
{ id: 2, name: 'jane' },
{ id: 3, name: 'bob' },
];
const byId = intersectionBy(users1, users2, 'id');
// byId는 [{ id: 2, name: 'jane' }]
// 세 개 배열의 교집합
const array3 = [2.5, 4.1];
const multiResult = intersectionBy(array1, array2, array3, Math.floor);
// multiResult는 [2.1]
// 배열 형태 객체
const arrayLike1 = { 0: { x: 1 }, 1: { x: 2 }, length: 2 };
const arrayLike2 = { 0: { x: 2 }, 1: { x: 3 }, length: 2 };
const byProperty = intersectionBy(arrayLike1, arrayLike2, 'x');
// byProperty는 [{ x: 2 }]null이나 undefined 배열은 빈 배열로 처리해요.
typescript
import { intersectionBy } from 'es-toolkit/compat';
const array1 = [{ x: 1 }, { x: 2 }];
const result = intersectionBy(array1, null, 'x');
// result는 []부분 객체나 프로퍼티-값 쌍으로도 조건을 지정할 수 있어요.
typescript
import { intersectionBy } from 'es-toolkit/compat';
const products1 = [
{ category: 'fruit', name: 'apple' },
{ category: 'vegetable', name: 'carrot' },
];
const products2 = [
{ category: 'fruit', name: 'banana' },
{ category: 'meat', name: 'beef' },
];
// 부분 객체로 조건 지정
const byCategory = intersectionBy(products1, products2, { category: 'fruit' });
// 프로퍼티-값 쌍으로 조건 지정
const byCategoryPair = intersectionBy(products1, products2, ['category', 'fruit']);파라미터
...arrays(Array<ArrayLike<T> | null | undefined>): 교집합을 구할 배열들이에요.iteratee(Function | PropertyKey | Array | Object): 각 요소를 변환할 조건이에요. 함수, 프로퍼티 이름, 프로퍼티-값 쌍, 또는 부분 객체일 수 있어요.
반환 값
(T[]): 변환된 값을 기준으로 모든 배열에 공통으로 존재하는 요소들의 새 배열을 반환해요.

