Javascript:将一个键数组变成一个空对象?

Javascript:将一个键数组变成一个空对象?,javascript,node.js,algorithm,recursion,Javascript,Node.js,Algorithm,Recursion,我知道这可能比我的大脑所做的要容易,但出于某种原因,我不能正确地做到这一点: 我有一个数组,如下所示: ["engine", "engine.car", "engine.car.driver", "engine.car.passenger", "wheels", "wheels.tires"] 我想把上面的数组转换成这个对象: { engine : { car : { driver : undefined, passe

我知道这可能比我的大脑所做的要容易,但出于某种原因,我不能正确地做到这一点:

我有一个数组,如下所示:

["engine", "engine.car", "engine.car.driver", 
 "engine.car.passenger", "wheels", "wheels.tires"]
我想把上面的数组转换成这个对象:

{
    engine : {
        car : {
            driver : undefined,
            passenger: undefined
        }
    },
    wheels : {
        tires: undefined
    }
 }

我使用的是node 8.10.0。

这对于JavaScript和eval功能来说非常简单。下面是一个简单的例子

var arr=[“发动机”、“发动机.汽车”、“发动机.汽车.驾驶员”、“发动机.汽车.乘客”、“车轮”、“车轮.轮胎”];
obj={};
对于(变量i=0;i控制台日志(obj)函数转换数组对象(数组){var resultObject={},索引,项;函数转换({u数组,tmpObject){if({u数组.length>1){tmpObject[\u数组[0]]]={};返回对象.assign(tmpObject,{u转换({u数组.slice(1),tmpObject[\u数组[0]]);}否则返回tmpObject[\u数组[0]]=void 0;}对于(index=0;index1?_转换(item.slice(1),{}):void 0;}返回resultObject;}
使用
eval
是不好的选择idea@GetOffMyLawn是否需要进一步说明?@GetOffMyLawn“eval的不当使用会打开注入攻击的代码”“这不是来自用户输入的数据,因此注入攻击不适用于此处。”调试可能更具挑战性(没有行号等),“这是一个公平的论点。”eval'd代码执行速度较慢(没有编译/缓存eval'd代码的机会)’即使是他指出的线程也不是过去的问题。没有绝对,这是eval的完美用法。你怎么知道这不是用户输入?