簡體   English   中英

如何在 JavaScript 中解構數組數組?

[英]How can I destructure an array of arrays in 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() 但是,大多數轉譯器(例如 Babel)都會對它進行 polyfill,並且 NodeJS 11+ 支持它。 Array.flat()的 MDN 文檔有使用 vanilla Javascript 的替代方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM