我有一个字符串
module: {
...
noParse: /(mapbox-gl)\.js$/
}
现在我需要一个obj对象
string = "foo.call=45&doo.foo=20&foo.in=5";
我怎样才能在JavaScript中执行此操作? 对于一个字符串=" foo.call = 45"
obj = {"foo": {"call": "45"}} {"foo": {"call": "45","in":"5"},"doo": {"foo":20}}
答案 0 :(得分:1)
您可以将字符串拆分为等号,并将左侧部分作为对象中值的路径。
function setValue(object, path, value) {
var way = path.split('.'),
last = way.pop();
way.reduce((o, k) => o[k] = o[k] || {}, object)[last] = value;
return object;
}
function getObject(string, object = {}) {
string
.split('&')
.forEach(s => setValue(object, ...s.split('=')));
return object;
}
console.log(getObject('foo.test.rest.call=45'));
console.log(getObject('foo.call=45&doo.foo=20&foo.in=5'));

.as-console-wrapper { max-height: 100% !important; top: 0; }