【发布时间】:2019-11-05 16:50:14
【问题描述】:
我有一个字符串,其参数用 & 号分隔,例如:
orderid=55e3a83e&DealId=545435&Amount=590 ....
如何将其转换为键/值映射?
我目前的代码如下:
const text = "orderid=55e3a83e&DealId=545435&Amount=590 ...."
let _key = "";
let _value = "";
var myregexp = /([^&=]+)=(.*?)(?=&[^&=]+=|$)/g;
var match = myregexp.exec(text);
while (match != null && key !== "url") {
_key = match[1];
_value = match[2];
dict.push({
key: _key,
value: _value
});
match = myregexp.exec(subject);
}
但它太长了,有什么更好或更短的想法吗?
【问题讨论】:
-
CodeManiac 的回答很棒,但您确实需要考虑是否会支持更复杂的查询字符串。许多地方通过重复键在查询中传递数组,例如,“foo=1&bar=2&bar=3&bar=4”,它应该返回
bar的值[2, 3, 4]。大多数简单的技术都无法解决这个问题。但话又说回来,你可能不需要。
标签: javascript node.js dictionary