繁体   English   中英

如何使用键值对将字符串转换为 object

[英]How to convert string into object with key value pairs

我有一个看起来像这样的字符串:

'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'

我想将其更改为如下所示的 object:

{ a: 'aaa, bbb, ccc', b: 'aaa, bbb, ccc', c: 'aaa, bbb, ccc' }

我尝试在&然后=上拆分,但结果是:

[ ['a', 'aaa','bbb','ccc'], ['b', 'aaa','bbb','ccc'], ['c', 'aaa','bbb','ccc' ] ]

你可以使用URLSearchParams

 var params = new URLSearchParams('a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'); var obj = Object.fromEntries(params.entries()) console.log(obj); 

如果您的浏览器没有这些功能,您可以使用polyfill:

https://www.npmjs.com/package/url-search-params-polyfill https://github.com/feross/fromentries

您可以使用QSURLSearchParams Polyfill等软件包来支持IE和Node.js等任何浏览器。

见下面的例子:

 console.log(Qs.parse('a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc')) 
 <script src="https://unpkg.com/qs@6.7.0/dist/qs.js"></script> 

如果您只想使用split() ,则需要使用拆分键和值创建对象。 您可以在reduce循环(或forEach() )中执行此操作:

 s = 'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc' let pairs = s.split('&') // each pair is like a=aaa,bbb,ccc let obj = pairs.reduce((obj,data)=> { let [k, v] = data.split('=') // split each pair into key/value obj[k] = v // add the key to the object return obj }, {}) console.log(obj) 

您可以像这样通过生成的数组进行迭代 -

var myObj = {};
for (var i=0; i<arr.length; i++) {
    for (var j=0; j<arr[i].length; j++) {
        var newProp = arr[i].shift();     
        myObj[newProp] =  arr[i].join()
    }
}

没有测试它,但我认为这将有效。

您可以通过首先拆分& ,然后映射拆分 output 以通过=再次拆分,然后使用Object.fromEntries将字符串强制转换为[key, value]条目的数组。

kv_str = 'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'
kv_pairs = kv_str.split('&') 
kv_entries = kv_pairs.map(kv => kv.split('='))
kv_obj = Object.fromEntries(kv_entries)
// kv_obj will be: {a: 'aaa,bbb,ccc', b: 'aaa,bbb,ccc', c: 'aaa,bbb,ccc'}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM