2017-04-01 77 views
-4

我有一個Javascript數組是這樣的:變換二維數組多維深度陣列在Javascript

[ 
    "values": [ 
     "Gray", 
     "Beige", 
     "Black" 
    ], 
    "values": [ 
     "Large", 
     "Small", 
     "Medium" 
    ] 
] 

而且,我需要在以下改造它:

[ 
    "Gray": [ 
     "Large": 0, 
     "Small": 0, 
     "Medium": 0 
    ], 
    "Beige": [ 
     "Large": 0, 
     "Small": 0, 
     "Medium": 0 
    ], 
    "Black": [ 
     "Large": 0, 
     "Small": 0, 
     "Medium": 0 
    ]: 
] 

主要的複雜性第一個陣列可以有很多values陣列,我需要它的值成爲新陣列的索引深度。我確信這可以使用循環結構,但我厭倦了嘗試。

我接受任何解決方案,使用Javascript和/或jQuery代碼:)。

+1

請顯示您嘗試過的操作無效。這不是免費的代碼寫入服務。這裏的想法是幫助我們修復***你的代碼*** – charlietfl

+2

你沒有這樣的數組。它只是沒有數組,也不是對象。 –

+0

這不是一個有效的JavaScript數組。 JavaScript數組不能有鍵。 –

回答

1

首先這兩個數組都是無效的。 JavaScript中的數組中不能有鍵。

您是在尋找任何物體或Map

所以你的第二個無效的數組將是有效的使用作爲一個對象中的對象:

{ 
    Gray:{ 
     Large: 0, 
     Small: 0, 
     Medium: 0 
    }, 
    Beige:{ 
     Large: 0, 
     Small: 0, 
     Medium: 0 
    }, 
    Black: { 
     Large: 0, 
     Small: 0, 
     Medium: 0 
    }: 
} 

問題是,遍歷一個JavaScript對象不簡單,並不是那種情況下的首選。

,所以我會去一個地圖的第一級陣列內,像這樣

var myMap = new Map(); 

var keyString = 'Gray' 

// setting the values 
myMap.set(keyString, { Large:0, Small:0, Medium:0 }); 

然後你可以遍歷您的地圖,包含爲

for (var [key, value] of myMap) { 
    console.log(key + ' = ' + value); 
} 

請檢出Map Docs from MDN for more info

+1

謝謝,這是一個非常有用的答案。 –

+0

我的榮幸,如果您發現它回答了您的問題,我邀請您將其標記爲選定的答案! :) – WilomGfx