数组[a,b,c,d]如何递归成a:{b:{c:{d:"test"}}}

var test = "a.b.c.d"

如何递归成

a:{
   b:{
     c:{
        d:"test"
       }
     }
   } 
阅读 2.5k
3 个回答

循环算法:

var test = "a.b.c.d";
var ret = "test";
var arr = test.split(".");
do {
    var key = arr.pop();
    var obj = {};
    obj[key] = ret;
    ret = obj;
} while(arr.length);
console.log(ret);

递归算法:

var test = "a.b.c.d";
var arr = test.split(".");
var i = arr.length;
var ret = (function merge(val){
    if (i--) {
        var obj = {};
        obj[arr[i]] = val;
        val = obj;
        return merge(val);
    } else return val;
})("test");
console.log(ret);
var test = "a.b.c.d"
const recur = (objkey, test) => (f = arr => arr.length ? {[arr.shift()]: f(arr)} : test)(objkey.split('.'))
console.log(recur(test, 'test'))
 {
      var test = "a.b.c.d";
      let arr = test.split('.');

      let newtest = 'test';
      for(let i = arr.length - 1; i >= 0; i--){
         let obj = {};
         obj[arr[i]] = newtest;
         newtest = obj;
      }
      console.log(newtest);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题