[英]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.