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.