[英]Better way to turn a one-dimensional array into multi-dimensional array by required group size in JS
[英]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.