您可以拆分路径并通过遍历给定的对象来缩小路径。如果不存在对象,请使用名称或数组创建一个新属性。稍后分配值。
function setValue(object, path, value) { var way = path.replace(/[/g, '.').replace(/]/g, '').split('.'), last = way.pop(); way.reduce(function (o, k, i, kk) { return o[k] = o[k] || (isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {}); }, object)[last] = value;}var test = {};setValue(test, "foo.name", "Mr. Foo");setValue(test, "foo.data[0].bar", 100);setValue(test, "and.another[2].deep", 20);console.log(test);


