VDL Plugin SDK

intersectionBy

Import from @varavel/vdl-plugin-sdk/utils/arrays.

function intersectionBy<T, U>(
   firstArr, 
   secondArr, 
   mapper
): T[];

Returns the intersection of two arrays based on a mapping function.

This function takes two arrays and a mapping function. It returns a new array containing the elements from the first array that, when mapped using the provided function, have matching mapped elements in the second array. It effectively filters out any elements from the first array that do not have corresponding mapped values in the second array.

Type Parameters

Type ParameterDescription
TThe type of elements in the first array.
UThe type of elements in the second array.

Parameters

ParameterTypeDescription
firstArrreadonly T[]The first array to compare.
secondArrreadonly U[]The second array to compare.
mapper(item) => unknownA function to map the elements of both arrays for comparison.

Returns

T[]

A new array containing the elements from the first array that have corresponding mapped values in the second array.

Examples

const array1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
const array2 = [{ id: 2 }, { id: 4 }];
const mapper = item => item.id;
const result = intersectionBy(array1, array2, mapper);
// result will be [{ id: 2 }] since only this element has a matching id in both arrays.
const array1 = [
  { id: 1, name: 'jane' },
  { id: 2, name: 'amy' },
  { id: 3, name: 'michael' },
];
const array2 = [2, 4];
const mapper = item => (typeof item === 'object' ? item.id : item);
const result = intersectionBy(array1, array2, mapper);
// result will be [{ id: 2, name: 'amy' }] since only this element has a matching id that is equal to seconds array's element.