[英]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
您可以使用QS或URLSearchParams 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.