mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-06 09:47:48 +00:00
Move internal modules to “internal” folder.
This commit is contained in:
36
.internal/baseXor.js
Normal file
36
.internal/baseXor.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import baseDifference from './.internal/baseDifference.js';
|
||||
import baseFlatten from './.internal/baseFlatten.js';
|
||||
import baseUniq from './.internal/baseUniq.js';
|
||||
|
||||
/**
|
||||
* 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 ? baseUniq(arrays[0]) : [];
|
||||
}
|
||||
let index = -1;
|
||||
const result = Array(length);
|
||||
|
||||
while (++index < length) {
|
||||
const array = arrays[index];
|
||||
let 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);
|
||||
}
|
||||
|
||||
export default baseXor;
|
||||
Reference in New Issue
Block a user