来自字符串的Javascript嵌套对象

use*_*433 7 javascript string jquery split object

我有一个空对象和一个字符串:

var obj = {};
var str = "a.b.c";
Run Code Online (Sandbox Code Playgroud)

有没有办法让我把它变成

obj = { a: { b: { c: { } } } }
Run Code Online (Sandbox Code Playgroud)

我不能完全围绕这一个,我甚至不确定它是否可能.

vol*_*ron 9

var obj = {};
var str = "a.b.c";
var arr = str.split('.');
var tmp = obj;

for (var i=0,n=arr.length; i<n; i++){
   tmp[arr[i]]={};
   tmp = tmp[arr[i]];
}
Run Code Online (Sandbox Code Playgroud)

ES6:

let str = "a.b.c",
    arr = str.split('.'),
    obj, o = obj = {};

arr.forEach(key=>{o=o[key]={}});

console.log(obj);
Run Code Online (Sandbox Code Playgroud)

ES6 /减少(不需要阵列存储):

let str = "a.b.c", obj, o = obj = {};

str.split('.').forEach(key=>o=o[key]={});

console.log(obj);
Run Code Online (Sandbox Code Playgroud)

ES6/Array.prototype.reduce:

let str = "a.b.c", last;

let obj = str.split('.').reduce((o, val) => {
  if (typeof last == 'object')
    last = last[val] = {};
  else
    last = o[val] = {};

  return o;
}, {});

console.log(obj);
Run Code Online (Sandbox Code Playgroud)