【问题标题】:String to object in JavaScript , one object [closed]JavaScript中的字符串到对象,一个对象[关闭]
【发布时间】:2018-05-19 08:42:48
【问题描述】:

我有一个字符串

string = "foo.call=45&doo.foo=20&foo.in=5";

现在我需要一个对象 obj 这样

obj = {"foo": {"call": "45"}} {"foo": {"call": "45","in":"5"},"doo": {"foo":20}}

如何在 JavaScript 中做到这一点? 对于一个字符串 = "foo.call=45"

function aaa(string){
    var aa = string.split('=')[0],
        bb = string.split('=')[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;
    }
    var object = JSON.stringify(setValue({}, aa, bb));
    console.log(object);    
}

【问题讨论】:

标签: javascript string object


【解决方案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; }

【讨论】:

  • 谢谢。如果是这种情况: string = "foo.call=45&doo.foo=20&foo.in=5" ?
  • @magnum888,你可以用'&'分割,取同一个对象进行赋值。
猜你喜欢
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多