UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

41 lines (40 loc) 1.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.unionBy = void 0; const baseFlatten_1 = __importDefault(require("./.internal/baseFlatten")); const baseUniq_1 = __importDefault(require("./.internal/baseUniq")); const isArrayLikeObject_1 = __importDefault(require("./isArrayLikeObject")); const last_1 = __importDefault(require("./last")); const getIteratee_1 = __importDefault(require("./.internal/getIteratee")); /** * This method is like `union` except that it accepts `iteratee` which is * invoked for each element of each `arrays` to generate the criterion by * which uniqueness is computed. Result values are chosen from the first * array in which the value occurs. The iteratee is invoked with one argument: * (value). * * @since 5.11.0 * @category Array * @param arrays The arrays to inspect. * @param iteratee The iteratee invoked per element. * @returns Returns the new array of combined values. * @see [[difference]], [[union]], [[unionWith]], [[without]], [[xor]], [[xorBy]] * @example * * ```js * unionBy([2.1], [1.2, 2.3], Math.floor) * // => [2.1, 1.2] * ``` */ function unionBy(...arrays) { let iteratee = (0, last_1.default)(arrays); if ((0, isArrayLikeObject_1.default)(iteratee)) { iteratee = undefined; } return (0, baseUniq_1.default)((0, baseFlatten_1.default)(arrays, 1, isArrayLikeObject_1.default, true), (0, getIteratee_1.default)(iteratee, 2)); } exports.unionBy = unionBy; exports.default = unionBy;