我有一个字符串,其参数用 & 符号分隔,例如:
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);
}
但是太长了,有更好或更短的想法吗?
最佳答案
可以先用&
分割,然后用=
分割每个元素,构建一个键/值对
let mapper = (str) => str.split('&').filter(Boolean).map(v => {
let [key, value] = v.split('=')
return { key, value }
})
console.log(mapper('orderid=55e3a83e&DealId=545435&Amount=590 '))
如果需要以单个对象的形式输出
let mapper = (str) => {
let splitted = str.split('&').map(v => v && v.split('=')).filter(Boolean)
return Object.fromEntries(splitted)
}
console.log(mapper('orderid=55e3a83e&DealId=545435&Amount=590 '))
关于javascript - 在 Javascript (node js) 中将带有 & 符号的字符串转换为键值映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58715937/