2017-04-01 16 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では配列内にキーを持つことはできません。

Youreのは、だからあなたの第二の無効な配列はオブジェクト内のオブジェクトであることと、有効になりますオブジェクトまたは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

関連する問題