2017-04-01 107 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