关于javascript:ES6新增方法之flat的使用和简单实现

8次阅读

共计 484 个字符,预计需要花费 2 分钟才能阅读完成。

Array.prototype.flat()
flat() 办法会依照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
长话短说,就是依照 flat 外面的参数对 Array 做一个去括号的操作,默认去一层。
上面就简略实现下

Array.prototype.myFlat = function (num = 1) {if (num < 1) {return this}
      const res = []
      for (let i = 0; i < this.length; i++) {if (Array.isArray(this[i])) {res.push(...this[i].myFlat(num - 1))
        } else {res.push(this[i])
        }
      }
      return res
    }

思路比较简单,如果是非数组,间接 push,如果是数字,须要把它去一层括号进行解决。去 N 次括号的话,调用 N 次 myFlat 办法即可。
测试一下
console.log([1, [2], 3, [[4]], [[[5]]]].myFlat(2))
在浏览器里能够看到一个新数组
0: 1
1: 2
2: 3
3: 4
4: [5]
当然,简单的话须要做一些预处理啥的

正文完
 0