我有一个看起来像这样的字符串:
'a=aaa,bbb,ccc&b=aaa,bbb,ccc&c=aaa,bbb,ccc'
,我想将其更改为如下所示的对象:
{ a: 'aaa, bbb, ccc', b: 'aaa, bbb, ccc', c: 'aaa, bbb, ccc' }
我尝试先分裂&
,然后再分裂=
,但结果是:
[ ['a', 'aaa','bbb','ccc'], ['b', 'aaa','bbb','ccc'], ['c', 'aaa','bbb','ccc' ] ]
答案 0 :(得分:3)
您可以只使用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
答案 1 :(得分:1)
您可以使用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>
答案 2 :(得分:1)
如果只想使用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)
答案 3 :(得分:0)
您可以像这样遍历结果数组-
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()
}
}
没有测试,但是我认为那可以。