Initial commit
[yaffs-website] / node_modules / node-sass / node_modules / lodash / _baseXor.js
1 var baseDifference = require('./_baseDifference'),
2     baseFlatten = require('./_baseFlatten'),
3     baseUniq = require('./_baseUniq');
4
5 /**
6  * The base implementation of methods like `_.xor`, without support for
7  * iteratee shorthands, that accepts an array of arrays to inspect.
8  *
9  * @private
10  * @param {Array} arrays The arrays to inspect.
11  * @param {Function} [iteratee] The iteratee invoked per element.
12  * @param {Function} [comparator] The comparator invoked per element.
13  * @returns {Array} Returns the new array of values.
14  */
15 function baseXor(arrays, iteratee, comparator) {
16   var length = arrays.length;
17   if (length < 2) {
18     return length ? baseUniq(arrays[0]) : [];
19   }
20   var index = -1,
21       result = Array(length);
22
23   while (++index < length) {
24     var array = arrays[index],
25         othIndex = -1;
26
27     while (++othIndex < length) {
28       if (othIndex != index) {
29         result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
30       }
31     }
32   }
33   return baseUniq(baseFlatten(result, 1), iteratee, comparator);
34 }
35
36 module.exports = baseXor;