function flatten(arr = [], depth = 1) {let result = [];(function flat(arr, depth) {arr.forEach((item) => {if (Array.isArray(item) && depth > 0) {flat(item, depth - 1)} else {result.push(item)}})})(arr, depth);return result;
}function flatten2(arr = [], depth = 1) {if(depth <= 0){return arr;}return arr.reduce((curr, item) => curr.concat(Array.isArray(item) ? flatten2(item, depth - 1) : item), []);
}function flatten3(arr = [], depth = 1) {let result = [];(function flat(arr, depth) {for (let item of arr) {if (Array.isArray(item) && depth > 0) {flat(item, depth - 1);} else {result.push(item);}}})(arr, depth);return result;
}const arr = [1, 2, 3, [], [4, 5, [], [4]]];const result = flatten2(arr, 2);
console.log(result);