1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function flattenWithDepth (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 }
function flattenForever (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 }
function arrayFlatten (array, depth) { if (depth == null) { return flattenForever(array, []) }
return flattenWithDepth(array, [], depth) }
console.log(arrayFlatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2)); console.log(arrayFlatten([1, [2, 666, [3, [4, [5], 6], 7], 8], 9]));
|