簡體   English   中英

Concat將多維數組轉換為一維數組

[英]Concat multi-dimensional array into one-dimensional array

我有一個帶對象的數組

const nodes = [ { children: [1, 2, 3] }, { children: [1, 2, 3] } ];

我想要一個新的數組[ 1, 2, 3, 1, 2, 3 ]

我試過了

nodes.map(node => node.children);

但它給了我[ [ 1, 2, 3 ], [ 1, 2, 3 ] ]

我試過了

[].concat(nodes.map(node => node.children));

但它不起作用,因為它只是將[][ [ 1, 2, 3 ], [ 1, 2, 3 ] ] ,這只是[ [ 1, 2, 3 ], [ 1, 2, 3 ] ]

您可以使用Array#reduce執行此操作

 const nodes = [ { children: [1, 2, 3] }, { children: [1, 2, 3] } ]; var result = nodes.reduce(function(r, o) { r = r.concat(o.children); return r; }, []); console.log(result) 

你可以使用Array#reduce

 const nodes = [ { children: [1, 2, 3] }, { children: [1, 2, 3] } ], result = nodes.reduce((r, node) => r.concat(node.children), []); console.log(result); console.log([... new Set(result)]); // for unique values 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

使用Array#forEach執行此操作的另一種方法:

 const nodes = [ { children: [1, 2, 3] }, { children: [1, 2, 3] } ] final = [] nodes.forEach(x => final = final.concat(x.children)) console.log(final) 

另一個更短的方法是(對OP試圖做的一點修改):

 const nodes = [ { children: [1, 2, 3] }, { children: [1, 2, 3] } ]; var result = [].concat.apply([], nodes.map(x => x.children)) console.log(result); 

暫無
暫無

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

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