在javascript中从数组构建对象

loc*_*zak 0 javascript

我有一个像这样的数组:['foo','bar']我想把它变成一个看起来像这样的对象:

{
     foo:{
          bar:{
               etc:{}
          }
     }
}

我已尝试过两个循环,但如果数组中有三个值,我可以让它工作.

Jos*_*ber 5

var obj = {};
var pointer = obj;

array.forEach(function (item) {
    pointer = pointer[item] = {};
});
Run Code Online (Sandbox Code Playgroud)

这是小提琴:http://jsfiddle.net/h67ts/


如果你必须支持IE <9,你可以使用常规循环,或使用此polyfill:

if ( !Array.prototype.forEach ) {
  Array.prototype.forEach = function(fn, scope) {
    for(var i = 0, len = this.length; i < len; ++i) {
      fn.call(scope, this[i], i, this);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)