Javascript 如何在给定键数组的情况下创建嵌套对象

Javascript 如何在给定键数组的情况下创建嵌套对象,javascript,arrays,object,Javascript,Arrays,Object,给定的数组如下所示: var level = ["a", "b", "x"]; 输出应为: { "a": { "b": { "x": { } } } } 我试过这个: var level = ["a", "b", "x"]; var o = {}; for (var c = 0, len = level.length; c < len; c +=1 ) { var part = l

给定的数组如下所示:

var level = ["a", "b", "x"];
输出应为:

{
    "a": {
        "b": {
            "x": {
            }
        }
    }
}
我试过这个:

var level = ["a", "b", "x"];
var o = {};
for (var c = 0, len = level.length; c < len; c +=1 ) { 
    var part = level[c]; 
    o[part] = {}; // how to remember the last part?
}
var级别=[“a”、“b”、“x”];
var o={};
对于(var c=0,len=level.length;c

如何记住最后一部分并添加下一个级别?

最简单的调整是在每次迭代时重新分配
o

var级别=[“a”、“b”、“x”];
var o={};
var initialO=o;
对于(var c=0,len=level.length;c控制台日志(缩写)我认为,如果您以函数式的方式编写它,这是最简单的

var level = ["a", "b", "x"];
var o = {};
level.reduce(function (obj, key) {
    o[key] = {};
    return o[key];
}, o);

如果标高存在,则可以使用检查,如果未设置,则仅指定对象

函数添加级别(级别,对象){
levels.reduce((o,l)=>o[l]=o[l]|{},对象);
}
var对象={};
添加级别([“a”、“b”、“x”],对象);
添加级别([“a”、“d”、“z”],对象);
console.log(对象)
您可以通过传递一个
箭头
函数作为参数来使用方法

var级别=[“a”、“b”、“x”];
设result=level.reduceRight((obj,elem)=>({[elem]:obj}),{});

控制台日志(结果)或使用递归函数

const level=[“a”、“b”、“x”];
常数f=(i)=>i==level.length?{}:{[级别[i]]:f(i+1)};

console.log(f(0))这是一段时间以来我第一次看到reduceRight的好用。很不错的!我也喜欢这个解决方案。