2014-08-28 2 views
-6

Я ищу, чтобы взять хэш, создать глубокую серию ключей, а затем добавить еще один хэш до конца.динамическое создание ассоциативного массива

дано ...

var hash_a = {'foo': 'bar'} 
var hash_b = {'alpha': 'beta'} 
var array = ['a', 'b', 'c'] 

как я могу генерировать следующий?

{ 
    'foo': 'bar', 
    'a':{ 
    'b':{ 
     'c': { 
     'alpha': 'beta' 
     } 
    } 
    } 
}; 
+0

Не просто спрашивайте, как что-то сделать, покажите, что вы пробовали: http://stackoverflow.com/help/on-topic – Blubberguy22

ответ

1

Это должно сделать трюк:

var hash_a = {'foo': 'bar'}; 
var hash_b = {'alha': 'beta'}; 
var array = ['a', 'b', 'c']; 

function build(a,b,c){ 
    var o=c.reduceRight(function(o, n){ var b={}; b[n]=o; return b; }, b); 
    for(x in a){ o[x]=a[x]; } 
    return o; 
} 

Вот fiddle играть. См. MDN для более подробного объяснения Array.prototype.reduceRight().

+0

Это близко, но все же не совсем правильно. В контексте второй строки функции b присоединяется к хэшу, а не как к хешу, а как к [Object] – adamwong246

+0

. Какая разница с вашим объектом? Посмотрите на http://jsfiddle.net/a8mmfpxw/3/ бдительность, потому что набрав на клавиатуре –

+0

Я боюсь, что при моем нынешнем понимании js (не много!) Я не могу ответить на этот вопрос. Возможно, это поможет https://gist.github.com/adamwong246/2d732c3537f4774334f6 – adamwong246

Смежные вопросы