1

let str = "AAA=001&BBB=002&CCC=003&DDD=004&EEE=005&FFF=006&GGG=007&HHH=008&III=009&JJJ=010&KKK=011&LLL=012&MMM=013&NNN=014&OOO=015&PPP=016&QQQ=017&QQQ=018"

and I need str to return like this:

{ "AAA":"001", "BBB":"002", "CCC":"003", "DDD":"004", "EEE":"005", "FFF":"006", "GGG":"007", "HHH":"008", "III":"009", "JJJ":"010", "KKK":"011", "LLL":"012", "MMM":"013", "NNN":"014", "OOO":"015", "PPP":"016", "QQQ":"017", "QQQ":"018" }

AmJaradat01
  • 103
  • 2
  • 9

1 Answers1

6

here are the answers I reached and both works...

The first solution:

var str = "AAA=001&BBB=002&CCC=003&DDD=004&EEE=005&FFF=006&GGG=007&HHH=008&III=009&JJJ=010&KKK=011&LLL=012&MMM=013&NNN=014&OOO=015&PPP=016&QQQ=017&RRR=018";

const URLSearchParams2JSON_1 = (STRING) => {
    var searchParams = new URLSearchParams(str);
    return Object.fromEntries([...searchParams]);
}

console.log(URLSearchParams2JSON_1(str));

The second solution:

var str = "AAA=001&BBB=002&CCC=003&DDD=004&EEE=005&FFF=006&GGG=007&HHH=008&III=009&JJJ=010&KKK=011&LLL=012&MMM=013&NNN=014&OOO=015&PPP=016&QQQ=017&RRR=018";

const URLSearchParams2JSON_2 = (STRING) => {
    var searchParams = new URLSearchParams(STRING);
    var object = {};
    searchParams.forEach((value, key) => {
        var keys = key.split('.'),
            last = keys.pop();
        keys.reduce((r, a) => r[a] = r[a] || {}, object)[last] = value;
    });
    return object;
}

console.log(URLSearchParams2JSON_2(str));
AmJaradat01
  • 103
  • 2
  • 9