以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖或者 官方解答中找到想要的答案!

BFE.devAI解答 - JavaScript 代码题
3. 实现Array.prototype.flat()

使用递归的方式实现Array.prototype.flat():

function flat(arr, depth = 1) {  return depth > 0 ?     arr.reduce((acc, val) =>       Array.isArray(val) ?         acc.concat(flat(val, depth - 1)) :         acc.concat(val)    , []) :    arr.slice();}

使用迭代的方式实现Array.prototype.flat():

function flat(arr, depth = 1) {  const result = [];  const stack = arr.map(val => ({ value: val, depth: 0 }));  while (stack.length) {    const { value, depth } = stack.pop();    if (Array.isArray(value) && depth < depth) {      for (let i = value.length - 1; i >= 0; i--) {        stack.push({ value: value[i], depth: depth + 1 });      }    } else {      result.unshift(value);    }  }  return result;}

其中使用了一个栈来存储当前的值和深度,类似于DFS的迭代写法。每次取出栈顶元素,如果是数组并且深度未达到指定层数,就将子元素依次推入栈中;否则说明已经扁平化到了指定深度,就将当前值加入结果数组中即可。由于需要保持顺序不变,这里使用了unshift()来在结果数组开头添加元素。