concat.js
 1  var arrayPush = require('./_arrayPush'),
 2      baseFlatten = require('./_baseFlatten'),
 3      copyArray = require('./_copyArray'),
 4      isArray = require('./isArray');
 5  
 6  /**
 7   * Creates a new array concatenating `array` with any additional arrays
 8   * and/or values.
 9   *
10   * @static
11   * @memberOf _
12   * @since 4.0.0
13   * @category Array
14   * @param {Array} array The array to concatenate.
15   * @param {...*} [values] The values to concatenate.
16   * @returns {Array} Returns the new concatenated array.
17   * @example
18   *
19   * var array = [1];
20   * var other = _.concat(array, 2, [3], [[4]]);
21   *
22   * console.log(other);
23   * // => [1, 2, 3, [4]]
24   *
25   * console.log(array);
26   * // => [1]
27   */
28  function concat() {
29    var length = arguments.length;
30    if (!length) {
31      return [];
32    }
33    var args = Array(length - 1),
34        array = arguments[0],
35        index = length;
36  
37    while (index--) {
38      args[index - 1] = arguments[index];
39    }
40    return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
41  }
42  
43  module.exports = concat;