这有点粗糙,可能可以改进,但作为一个开始,你可以使用一个功能分裂一个。分隔字符串并为您创建嵌套的子对象。像这样的作品
function setObjValue(obj, nesting, value) {
var nestArr = Array.isArray(nesting) ? nesting : (nesting.indexOf(".") > -1) ? nesting.split(".") : [nesting],
len = nestArr.length,
i = 0,
cur = obj;
for (; i < len; i++) {
if (i === len-1) {
cur[nestArr[i]] = value;
} else {
if (!cur[nestArr[i]]) cur[nestArr[i]] = {};
cur = cur[nestArr[i]];
}
}
}
然后使用
var a = {};
setObjValue(a, "hello.what", "world");
//OR
setObjValue(a, ["hello", "what"], "world");
console.log(a); //{hello:{ what: "world" }};
UPDATE: 我刚刚更新上面的功能和处理与已设置的键的对象小提琴,它也将接受嵌套参数作为数组。
JSFiddle
不,我不认为JavaScript有这个。 – Barmar
古老的Perlish autovivification。不在Javascript中。但为什么你真的需要这个? – Thilo
对单线队员的痴迷是什么?我们是否没有新行? – Barmar