import { forEach, findIndex } from "./"; import { curry } from ".."; /** * Returns a unique list of elements from list1 that are not present in list2. * Comparison is done using the binary function argument - `equalsFn`. * * @see difference * @param {function} equalsFn * @param {any[]} list1 * @param {any[]} list2 * @returns {any[]} */ const differenceWith = (equalsFn, list1, list2) => { const result = []; forEach((el) => { const resIndex = findIndex((resEl) => equalsFn(resEl, el), result); const listIndex = findIndex((el2) => equalsFn(el2, el), list2); if (resIndex === -1 && listIndex === -1) { result.push(el); } }, list1); return result; }; export default curry(differenceWith);