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的好用。很不错的!我也喜欢这个解决方案。