@newdash/newdash
Version:
javascript/typescript utility library
38 lines (37 loc) • 1.46 kB
JavaScript
;
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;