如何通过Lodash将字符串转换为对象

时间:2017-08-18 08:51:41

标签: javascript string object lodash

如何通过lodash将"t=1&m=6&r=2"转换为{t:1, m:6, r:2}

3 个答案:

答案 0 :(得分:4)

您可以拆分字符串并使用_.fromPairs来获取对象。

如有必要,您可以使用decodeURI来解码包含%20等元素的字符串。



var string = decodeURI("t=1&m=6&r=%20"),
    object = _.fromPairs(string.split('&').map(s => s.split('=')));
    
console.log(object);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

如果您在浏览器中工作,则可以使用URLSearchParams课程。它不属于 lodash ,它只是标准JavaScript的一部分。 IE尚未支持,但您可以使用polyfill

答案 2 :(得分:1)

使用split()Array#reduce()函数

尝试使用简单的javascript

&#13;
&#13;
var str = 't=1&m=6&r=2';

var res = str.trim().split('&').reduce(function(a, b) {
  var i = b.split('=');
  a[i[0]] = i[1];
  return a;
}, {})

console.log(res)
&#13;
&#13;
&#13;

使用lodash

&#13;
&#13;
var str = 't=1&m=6&r=2';

    var res = _.reduce(_.split(str.trim(),'&'),function(a, b) {
      var i = b.split('=');
      a[i[0]] = i[1];
      return a;
    }, {})
    
    console.log(res)
&#13;
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
&#13;
&#13;
&#13;