Spaces:
Runtime error
Runtime error
var baseDifference = require('./_baseDifference'), | |
baseFlatten = require('./_baseFlatten'), | |
baseUniq = require('./_baseUniq'); | |
/** | |
* The base implementation of methods like `_.xor`, without support for | |
* iteratee shorthands, that 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) { | |
var length = arrays.length; | |
if (length < 2) { | |
return length ? baseUniq(arrays[0]) : []; | |
} | |
var index = -1, | |
result = Array(length); | |
while (++index < length) { | |
var array = arrays[index], | |
othIndex = -1; | |
while (++othIndex < length) { | |
if (othIndex != index) { | |
result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); | |
} | |
} | |
} | |
return baseUniq(baseFlatten(result, 1), iteratee, comparator); | |
} | |
module.exports = baseXor; | |