javascript - 在 Javascript (node js) 中将带有 & 符号的字符串转换为键值映射

标签 javascript node.js dictionary

我有一个字符串,其参数用 & 符号分隔,例如:

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/

相关文章:

javascript - 是否有正确的方法来 $.extend jQuery 中的嵌套属性?

javascript - 从匹配最小值的 json 数组返回单个 json 对象

node.js - db.collectionNames 在 Node.js 中不起作用

javascript - RethinkDB:​​条件更新插入(仅当特定字段匹配时)?

Python - 生成父/子字典结构

C++在for_each期间从集合中删除元素

javascript - 搜索菜单,然后从各种菜单导航到搜索到的菜单

javascript - 如何使用 forEach 删除列表中的元素?

javascript - 没有模板的 AngularJS 指令并共享父范围的更新

python - 将 Python 字符串或字典插入 MySQL