UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

48 lines (47 loc) 1.89 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.differenceBy = void 0; const baseDifference_1 = __importDefault(require("./.internal/baseDifference")); const baseFlatten_1 = __importDefault(require("./.internal/baseFlatten")); const getIteratee_1 = __importDefault(require("./.internal/getIteratee")); const isArrayLikeObject_1 = __importDefault(require("./isArrayLikeObject")); const last_1 = __importDefault(require("./last")); /** * This method is like `difference` except that it accepts `iteratee` which * is invoked for each element of `array` and `values` to generate the criterion * by which they're compared. The order and references of result values are * determined by the first array. The iteratee is invoked with one argument: * (value). * * **Note:** Unlike `pullAllBy`, this method returns a new array. * * @since 5.9.0 * @category Array * @param array The array to inspect. * @param values The values to exclude. * @returns Returns the new array of filtered values. * @example * * ```js * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); * // => [1.2] * * // The `_.property` iteratee shorthand. * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); * // => [{ 'x': 2 }] * ``` */ function differenceBy(array, ...values) { let iteratee = (0, last_1.default)(values); if ((0, isArrayLikeObject_1.default)(iteratee)) { iteratee = undefined; } return (0, isArrayLikeObject_1.default)(array) ? (0, baseDifference_1.default)(array, (0, baseFlatten_1.default)(values, 1, isArrayLikeObject_1.default, true), (0, getIteratee_1.default)(iteratee, 2)) : []; } exports.differenceBy = differenceBy; exports.default = differenceBy;