2017-09-26 55 views
-1

如果我有以下格式的數組:如何在打字稿中拼合2D數組?

[0]: 
    ["id_1"]: 
     prop1: "abc" 
     prop2: "def" 
    ["id_2"]: 
     prop1: "ghi" 
     prop2: "jkl" 
[1]: 
    ["id_3"]: 
     prop1: "mno" 
     prop2: "pqr" 
    ["id_4"]: 
     prop1: "stu" 
     prop2: "vwx" 

我怎麼會是映射到一個數組使用以下格式:

[0]: 
    key: "id_1" 
    prop1: "abc" 
    prop2: "def" 
[1]: 
    key: "id_2" 
    prop1: "ghi" 
    prop2: "jkl" 
[2]: 
    key: "id_3" 
    prop1: "mno" 
    prop2: "pqr" 
[4]: 
    key: "id_4" 
    prop1: "stu" 
    prop2: "vwx" 

我一直在使用這裏所描述的功能扁平化嘗試: Merge/flatten an array of arrays in JavaScript? 但我不知道如何設置每個扁平子元素的關鍵。

+0

對於你在做什麼而言,你並不是簡單地展開一個數組,而是從數組和屬性的混合中創建一個全新的數組。 –

+1

請發佈有效的樣本數據。 – baao

回答

0

我不知道,如果數據結構是正確的,因爲你拒絕發佈它,但如果我猜的權利,你可以得到一個降低,地圖組合

let arr = [ 
 
    [{id_1: {prop1: 'abc', prop2: 'def'}}, {id_2: {prop1: 'ghi', prop2: 'jkl'}}], 
 
    [{id_3: {prop1: 'abc', prop2: 'def'}}, {id_4: {prop1: 'ghi', prop2: 'jkl'}}] 
 
]; 
 

 

 
function flatten(arr) { 
 
    return arr.reduce((a, b) => { 
 
    return a.concat(b.map(e => { 
 
     let key = Object.keys(e)[0]; 
 
     return Object.assign({ 
 
     key 
 
     }, e[key]); 
 
    })) 
 
    }, []) 
 
} 
 

 
console.log(flatten(arr));
期望的結果