揭秘 Array.prototype.flat 旧方法 新方法!魔法 等待它 总结

2025-06-09

揭秘 Array.prototype.flat

旧方法

新方法!

魔法

等待

总之

ES2019 现已正式发布,供大家使用。需要注意的是,如果您使用这些功能,请确保您的浏览器和/或编译器支持它们。

事不宜迟,让我们深入研究第一个新功能。我给你 Array.prototype.flat!

旧方法

由于多种原因,我们的代码中存在嵌入式数组,老实说,它们有点麻烦。

let arr = [1, 2, [3, 4, [5, 6]]]
Enter fullscreen mode Exit fullscreen mode

处理这类事情过去需要使用像下面代码那样的非直观技巧。

var merged = [].concat.apply([], arr);
Enter fullscreen mode Exit fullscreen mode

而这只会导致一个深度层次被压平!

[1, 2, 3, 4, [5, 6]]
Enter fullscreen mode Exit fullscreen mode

嘘!

新方法!

然后出现了flat()。这改变了游戏规则。

做我们上面所做的事情是轻而易举的。

var merged = arr.flat(1)
Enter fullscreen mode Exit fullscreen mode

这个参数就是我们想要展平的深度。所以,像之前一样,一层深度就能得到这个结果。

[1, 2, 3, 4, [5, 6]]
Enter fullscreen mode Exit fullscreen mode

请注意,如果您不传递参数,则默认为1。这意味着这些语句是等效的。

arr.flat(1)
//is the same as
arr.flat()
Enter fullscreen mode Exit fullscreen mode

魔法

但其强大的功能远不止于此。我们只需一行代码就能展平整个数组。

var merged = arr.flat(2)
Enter fullscreen mode Exit fullscreen mode

成为

[1, 2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode

等待

我们甚至还获得了一个更棒的功能。假设我们不知道数组的深度,但我们想将其完全展平。

var merged = arr.flat(Infinity)
Enter fullscreen mode Exit fullscreen mode

Ron Swanson 说到底发生了什么

总之

这真是个奇迹!继续享受 ES2019 给我们带来的惊喜吧。

鏂囩珷鏉ユ簮锛�https://dev.to/laurieontech/demystifying-array-prototype-flat-g​​i9
PREV
焦点 vs 焦点内
NEXT
组件生命周期方法详解