vendor/optional/lodash-0.3.2.js
function union() {
    var index = -1,
        result = [],
        flattened = concat.apply(result, arguments),
        length = flattened.length;

    while (++index < length) {
      if (indexOf(result, flattened[index]) < 0) {
        result.push(flattened[index]);
      }
    }
    return result;
  }
function union() {
    var index = -1,
        result = [],
        flattened = concat.apply(result, arguments),
        length = flattened.length;

    while (++index < length) {
      if (indexOf(result, flattened[index]) < 0) {
        result.push(flattened[index]);
      }
    }
    return result;
  }
function union ( ) { var index = - 1 , result = [ ] , flattened = concat . apply ( result , arguments ) , length = flattened . length ; while ( ++ index < length ) { if ( indexOf ( result , flattened [ index ] ) < 0 ) { result . push ( flattened [ index ] ) ; } } return result ; }
Computes the union of the passed-in arrays.

@static
@memberOf _
@category Arrays
@param {Array} [array1, array2, ...] Arrays to process.
@returns {Array} Returns a new array of unique values, in order, that are
present in one or more of the arrays.
@example

_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]);
// => [1, 2, 3, 101, 10]
Computes the union of the passed - in arrays .