Remeda does not provide a direct differenceBy equivalent. Recreate this logic using a composition of filter, piped, isNot, isIncludedIn, and map.
- If the iteratee is a property name, use the
prop function. - Handle nullish inputs explicitly using
?? [] or isNonNullish checks. - If no iteratee is provided, it behaves like
difference.
// Function iteratee
// Lodash: _.differenceBy(DATA, values, iteratee);
filter(DATA, piped(iteratee, isNot(isIncludedIn(map(values, iteratee)))));
// Property iteratee
// Lodash: _.differenceBy(DATA, values, "x");
filter(DATA, piped(prop("x"), isNot(isIncludedIn(map(values, prop("x"))))));
// Multiple exclusion arrays
// Lodash: _.differenceBy(DATA, a, b, c, iteratee);
filter(DATA, piped(iteratee, isNot(isIncludedIn(map([...a, ...b, ...c], iteratee)))));