来自字符串的Javascript嵌套对象
我有一个空对象和一个字符串:
var obj = {}; var str = "abc";
有没有办法让我把它变成
obj = { a: { b: { c: { } } } }
我不能完全围绕这一个,我甚至不确定它是否可能。
var obj = {}; var str = "abc"; var arr = str.split('.'); var tmp = obj; for (var i=0,n=arr.length; i
ES6:
let str = "abc", arr = str.split('.'), obj, o = obj = {}; arr.forEach(key=>{o=o[key]={}}); console.log(obj);
这是来自yui2 yahoo.js文件。
YAHOO.namespace = function() { var a=arguments, o=null, i, j, d; for (i=0; i
请参阅文档来源。
https://github.com/yui/yui2/blob/master/src/yahoo/js/YAHOO.js
此递归函数返回所需对象的字符串表示forms
//Usage: getObjectAsString('abc'.split(/\./)) function getObjectAsString (array){ return !array.length ? '{}' : '{"' + array[0] + '":' + getObjectAsString (array.slice(1)) + '}'; }
现在,您可以使用getObjectAsString的输出转换为对象
JSON.parse(getObjectAsString('abc'.split(/\./)))
编辑 :删除’输入为字符串’版本,因为它仅适用于命名空间中的单个字母子部分,例如问题(abc)中给出的那个,通常不是这种情况。
干得好:
var string = "abc", array = string.split('.'); JSON.parse("{\"" + array.join('": {\"') + "\": {" +array.map(function () {return '}'}).join('') + "}")
例
这是我的看法:
function ensureKeys(str, obj) { for(var parts = str.split('.'), i=0, l=parts.length, cache=obj; i