javascript - 如何在 JavaScript 中解构数组数组?

标签 javascript

我有一个数组数组。每个嵌套数组都包含对象,但它可能包含对象数组。例如:

let arr=[[{a:1}],[{b:2}, [{c:3}, {d:4}]]]

我想创建一个只包含解构所有数组的对象的数组。我试过了

arr.reduce((a,b) => [...a,...b], [])

但我得到的是:

[{a:1}, {b:2}, [{c:3},{d:4}]]

这不是我想要的。 我想得到:

 [{a:1}, {b:2}, {c:3}, {d:4}]   

最佳答案

您应该考虑使用 Array.flat()方法。

console.log( [[{a:1}],[{b:2}, [{c:3}, {d:4}]]].flat() )

您会注意到上面的例子只展平了一层。这是因为 depth 参数默认为 1。在我们的例子中,我们需要展平 2 个级别,因此我们显式地将 2 传递给 .flat()

console.log( [[{a:1}],[{b:2}, [{c:3}, {d:4}]]].flat(2) )

如果你需要它更深入,你可以增加这个数字。如果您需要它来处理任何深度,请使用 Infinity .

console.log( [[{a:1}],[{b:2}, [{c:3}, {d:4}]]].flat(Infinity) )

值得注意的是,在撰写此答案时,flat() is not supported by all browsers .然而,大多数转译器(例如 Babel)都会对其进行 polyfill,并且 NodeJS 11+ 支持它。 Array.flat() 的 MDN 文档有 alternatives that use vanilla Javascript .

关于javascript - 如何在 JavaScript 中解构数组数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56838686/

相关文章:

javascript - 创建一个倒计时器并在倒计时为零后重定向到另一个页面

javascript - CSS - 隐藏与文本区域重叠的文本

javascript - 如何正确使用lodash pick方法

javascript - React.js 移动网站在 Android 上的 Chrome 中卡住

php - 浏览器语言来自 PHP 还是 JavaScript?

javascript - 将切换的 div 的高度设置为百分比

javascript - 如何从表中获取行明智的值?

JavaScript + Regex::在整个文档中将 "foo"替换为 "bar",不包括 URL

javascript - 在webview中动态隐藏部分html

javascript - 跨子域 iframe 和 JavaScript