我有一个空对象和一个字符串:
var obj = {}; var str = "a.b.c";
有没有办法让我把它变成
obj = { a: { b: { c: { } } } }
我不能完全围绕这一个,我甚至不确定它是否可能.
解决方法
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]]; }
ES6:
let str = "a.b.c",arr = str.split('.'),obj,o = obj = {}; arr.forEach(key=>{o=o[key]={}}); console.log(obj);
ES6 /减少(不需要阵列存储):
let str = "a.b.c",o = obj = {}; str.split('.').forEach(key=>o=o[key]={}); console.log(obj);
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);