【发布时间】:2018-01-26 21:27:56
【问题描述】:
如何通过lodash将"t=1&m=6&r=2"转换为{t:1, m:6, r:2}?
【问题讨论】:
标签: javascript string object lodash
如何通过lodash将"t=1&m=6&r=2"转换为{t:1, m:6, r:2}?
【问题讨论】:
标签: javascript string object lodash
您可以拆分字符串并使用_.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>
【讨论】:
使用split() 和Array#reduce() 函数尝试简单的javascript
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)
使用 lodash
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)
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
【讨论】:
如果您在浏览器中工作,则可以使用URLSearchParams 类。它不是 lodash 的一部分,它只是标准 JavaScript 的一部分。 IE 尚不支持,但您可以使用polyfill。
【讨论】: