Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组到多级对象_Javascript_Arrays_Json_Object - Fatal编程技术网

Javascript数组到多级对象

Javascript数组到多级对象,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有一个JavaScript数组,需要将其转换为多级对象。 例子: 输入: 我想要的输出: var myObj = {abc:{ def: { ghi: {} } }}; 使用JavaScript实现它最有效的方法是什么?您可以使用reduce()并将空对象作为累加器传递 var myArray=[“abc”、“def”、“ghi”]; var obj={} reduce((r,e)=>r[e]={},obj); console.log(obj)您能告诉我们您的“低效”方式吗?也许我们可以改

我有一个JavaScript数组,需要将其转换为多级对象。 例子: 输入:

我想要的输出:

var myObj = {abc:{ def: { ghi: {} } }};
使用JavaScript实现它最有效的方法是什么?

您可以使用
reduce()
并将空对象作为累加器传递

var myArray=[“abc”、“def”、“ghi”];
var obj={}
reduce((r,e)=>r[e]={},obj);

console.log(obj)
您能告诉我们您的“低效”方式吗?也许我们可以改进它?这种方式听起来更像是要求免费编写代码,而不是帮助编写代码。Stackoverflow不是一个免费的代码编写服务,但是如果你展示了你的尝试和研究成果,就会得到很多帮助。如果你只是将整个reduce函数分配给一个变量,为什么它不起作用呢?比如
var res=myArray.reduce((…)=>…,{})?我想这是因为reduce返回的最后一个东西是这个
(r[e]={})
,它等于这个,你可以删除
|
,因为你知道你总是在一个空对象上操作
myArray.reduce((r,e)=>r[e]={},obj)听起来合乎逻辑。顺便说一句,@squint,你能给我解释一下为什么如果我们把reduce函数赋给一个变量,它就不起作用了吗?是关于Nenad所说的吗?@Kind user只是想澄清一下,我们使用obj作为累加器,但您将reduce的结果分配给一个变量,这是reduce最后返回的内容,如您所见
var myObj = {abc:{ def: { ghi: {} } }};