Créer un objet anéché dynamique à partir d'un ensemble de propriétés

Cela ressemble à une tâche simple, mais je ne peux pas tout comprendre: j'ai un tableau:

var array = ['opt1','sub1','subsub1','subsubsub1'] 

De cela, je souhaite générer les objets suivants:

 { opt1:{ sub1:{ subsub1:{ subsubsub1:{} } } } } 

J'ai un moyen de le faire, faire une chaîne et utiliser eval, mais je cherche à éviter cela, une idée?

Vous pouvez utiliser reduce :

 var array = ['opt1','sub1','subsub1','subsubsub1']; var object = {}; array.reduce(function(o, s) { return o[s] = {}; }, object); 

Mais cela n'a été introduit que dans ECMAScript 5.1, donc il ne sera pas pris en charge dans certains navigateurs plus anciens. Si vous voulez quelque chose qui sera pris en charge par les navigateurs existants, vous pouvez utiliser la technique polyfill décrite dans l'article MDN ci-dessus, ou un simple for -loop, comme ceci:

 var object = {}, o = object; for(var i = 0; i < array.length; i++) { o = o[array[i]] = {}; } 

Vous pouvez utiliser la fonction lodash set

 _.set(yourObject, 'abc')