js如何实现数组flat()方法

145 阅读1分钟

有时候会碰到一些问题,尤其是面试的时候,让你实现一些已有的方法。现在我们用数组扁平化方法来试验一下吧

Array.prototype.myFlat = function (num) {
  // 声明结果数组
  const result = [];
  // 通过this获取原数组
  if (!Array.isArray(this)) {
    return result;
  }
  this.forEach(item => {
    if (Array.isArray(item)) {
      // num为进行降维几次扁平化
      num--
      if (num < 0) {
        return result.push(item)
      }
      // 若为数组,则继续扁平化
      result.push(...item.myFlat(num))
    } else {
      // 如果不是数组,则直接放入结果数组
      result.push(item)
    }
  })
  return result;
}

const arr = [1, 2, [3, 4, [5, 6, [7, 8], 9]]]
console.log(arr.myFlat(4))

方法如上,你们也可以试试通过在原型上添加方法来实现数组的其他方法啊。