Javascript 如何将具有多个相同键的srting数组转换为JSON对象?

Javascript 如何将具有多个相同键的srting数组转换为JSON对象?,javascript,node.js,arrays,json,api-gateway,Javascript,Node.js,Arrays,Json,Api Gateway,我从查询字符串中提取了一个数组,如下所示: var arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10' 我需要将这个数组转换为JSON对象。我正在使用以下代码: const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2

我从查询字符串中提取了一个数组,如下所示:

var arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'

我需要将这个数组转换为JSON对象。我正在使用以下代码:

    const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'

function arrayToObject(query) {
    const uri = decodeURIComponent(query);
    const chunks = uri.split('&');
    const params = {}
    var chunk = {}
    for (var i=0; i < chunks.length ; i++) {
        chunk = chunks[i].split('=');
        console.log(chunk)
        params[chunk[0]] = chunk[1];
        }

    return params;
}
const querySt = arrayToObject(decodedQueryString);
const qSt = JSON.stringify(querySt);

console.log(qSt)
const arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
函数arrayToObject(查询){
consturi=decodeURIComponent(查询);
const chunks=uri.split('&');
常量参数={}
var chunk={}
for(var i=0;i
我得到以下输出: {“feild1”:“12345”,“状态”:“进行中”,“feild2”:“2”,“feild3”:“abc”,“feild4”:“10”}

但我需要这样的输出: {“feild1”:“12345”,“状态”:[“新的”、“分配的”、“进行中的”],“feild2”:“2”,“feild3”:“abc”,“feild4”:“10”}

有人能帮上忙吗。

这可以:

const arr = 'field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'

function arrayToObject(query) {
    const uri = decodeURIComponent(query);
    const chunks = uri.split('&');
    const params = {}
    var chunk = {}
    for (var i=0; i < chunks.length ; i++) {
        chunk = chunks[i].split('=');
        console.log(chunk)
        if (params[chunk[0]]){
        params[chunk[0]] = Array.isArray(params[chunk[0]]) ? [...params[chunk[0]], chunk[1]] : [params[chunk[0]], chunk[1]];
        } else {
        params[chunk[0]] = chunk[1];
        }
        }

    return params;
}
const querySt = arrayToObject(arr);
const qSt = JSON.stringify(querySt);
const arr='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
函数arrayToObject(查询){
consturi=decodeURIComponent(查询);
const chunks=uri.split('&');
常量参数={}
var chunk={}
for(var i=0;i
将字符串转换为对象。从对象中获取关键点,并将它们传递给一个对象以获取唯一的关键点。现在,将键数组缩小为一个对象,并用于单值键和多值键(如
状态
):

const str='field1=12345&status=New&status=Assigned&status=In Progress&field2=2&field3=abc&feild4=10'
常量参数=新的URLSearchParams(str)
常量结果=[…新集合([…params.keys()])]
.减少((附件,钥匙)=>{
acc[键]=键==='状态'
?参数getAll(键)
:params.get(键)
返回acc
}, {})
console.log(JSON.stringify(result))