'use strict';

function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }

var isUdf = _interopDefault(require('./isUdf'));
var isFun = _interopDefault(require('./isFun'));

/**
 * 生成一个指定长度和填充的数组
 * @param length 长度
 * @param value 填充值或填充函数
 *
 * @example
 * array();              // => []
 * array(5);             // => [0, 1, 2, 3, 4]
 * array(5, '');         // => ['', '', '', '', '']
 * array(5, i => i * i); // => [0, 1, 4, 9, 16]
 */
function array(length, value) {
  var arr = [],
      val = 0,
      i = -1;

  while (++i < length) {
    if (isUdf(value)) {
      arr.push(val++);
    } else if (isFun(value)) {
      arr.push(value(i));
    } else {
      arr.push(value);
    }
  }

  return arr;
}

module.exports = array;
