import isArr from './isArr';

/**
 * 把有结构的数组打散，减少层数
 * @param array 需要打散的数组
 * @param deep 是否深度打散
 *
 * flatten([1, [2, 3], [4, 5]]);       // => [1, 2, 3, 4, 5]
 * flatten([1, [2, [3, 4]], 5]);       // => [1, 2, [3, 4], 5]
 * flatten([1, [2, [3, 4]], 5], true); // => [1, 2, 3, 4, 5]
 */
function flatten(array, deep) {
  if (!isArr(array)) return [];
  var arr = [];
  array.forEach(function (item) {
    if (isArr(item)) {
      arr = arr.concat(deep ? flatten(item, true) : item);
    } else {
      arr.push(item);
    }
  });
  return arr;
}

export default flatten;
