UNPKG

@newdash/newdash

Version:

javascript/typescript utility library

38 lines (37 loc) 1.46 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const baseDifference_1 = __importDefault(require("./baseDifference")); const baseFlatten_1 = __importDefault(require("./baseFlatten")); const baseUniq_1 = __importDefault(require("./baseUniq")); /** * The base implementation of methods like `xor` which accepts an array of * arrays to inspect. * * @private * @param {Array} arrays The arrays to inspect. * @param {Function} [iteratee] The iteratee invoked per element. * @param {Function} [comparator] The comparator invoked per element. * @returns {Array} Returns the new array of values. */ function baseXor(arrays, iteratee, comparator) { const length = arrays.length; if (length < 2) { return length ? (0, baseUniq_1.default)(arrays[0]) : []; } let index = -1; const result = new Array(length); while (++index < length) { const array = arrays[index]; let othIndex = -1; while (++othIndex < length) { if (othIndex != index) { result[index] = (0, baseDifference_1.default)(result[index] || array, arrays[othIndex], iteratee, comparator); } } } return (0, baseUniq_1.default)((0, baseFlatten_1.default)(result, 1), iteratee, comparator); } exports.default = baseXor;