'use strict'
module.exports = arrayFlatten
/**
* Recursive flatten function with depth.
*/functionflattenWithDepth(array, result, depth){for(var i =0; i < array.length; i++){var value = array[i]if(depth >0&& Array.isArray(value)){flattenWithDepth(value, result, depth -1)}else{
result.push(value)}}return result
}/**
* Recursive flatten function. Omitting depth is slightly faster.
*/functionflattenForever(array, result){for(var i =0; i < array.length; i++){var value = array[i]if(Array.isArray(value)){flattenForever(value, result)}else{
result.push(value)}}return result
}/**
* Flatten an array, with the ability to define a depth.
*/functionarrayFlatten(array, depth){if(depth ==null){returnflattenForever(array,[])}returnflattenWithDepth(array,[], depth)}