This solution is generated by ChatGPT, correctness is not guaranteed.
AI solution for JavaScript Coding Question on BFE.dev
3. implement Array.prototype.flat()
Recursive solution:
function flat(arr, depth = Infinity) {
const flattened = [];
for (const element of arr) {
if (Array.isArray(element) && depth > 0) {
flattened.push(...flat(element, depth - 1));
} else {
flattened.push(element);
}
}
return flattened;
}
Iterative solution:
function flat(arr, depth = Infinity) {
const flattened = [];
const stack = [...arr];
while (stack.length) {
const next = stack.pop();
if (Array.isArray(next) && depth > 0) {
stack.push(...next);
depth--;
} else {
flattened.unshift(next);
}
}
return flattened;
}
Note: The iterative solution produces a reversed flattened array, hence the use of unshift
to maintain order.