77638775da124d0f733b19dfcbe7756ef6e1a5cc
[platform/framework/web/crosswalk-tizen.git] /
1 var baseDifference = require('../internal/baseDifference'),
2     baseUniq = require('../internal/baseUniq'),
3     isArguments = require('../lang/isArguments'),
4     isArray = require('../lang/isArray');
5
6 /**
7  * Creates an array that is the [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
8  * of the provided arrays.
9  *
10  * @static
11  * @memberOf _
12  * @category Array
13  * @param {...Array} [arrays] The arrays to inspect.
14  * @returns {Array} Returns the new array of values.
15  * @example
16  *
17  * _.xor([1, 2], [4, 2]);
18  * // => [1, 4]
19  */
20 function xor() {
21   var index = -1,
22       length = arguments.length;
23
24   while (++index < length) {
25     var array = arguments[index];
26     if (isArray(array) || isArguments(array)) {
27       var result = result
28         ? baseDifference(result, array).concat(baseDifference(array, result))
29         : array;
30     }
31   }
32   return result ? baseUniq(result) : [];
33 }
34
35 module.exports = xor;