Есть строка:
let str = '?name[]=Ivan&name[]=Oleg&page=1&number=5';
Надо из неё получить объект:
{
name: ['Ivan', 'Oleg'],
page: 1,
number: 5
}
Из имени параметра
name
удалены
[]
, значения собрались в массив.
Пробую примерно так:
const regExp = /\[\]$/;
const paramsName = new URLSearchParams(str);
let result = []
for (const k of paramsName.keys()) {
if (regExp.test(k)) {
let one = paramsName.getAll(k);
k.replace('[]', '');
result = [ ...result,
Object.fromEntries(Object.entries(paramsName).map(([key]) => [key: k, one]))]
} else {
let two = paramsName.get(k);
result = [...result,
Object.fromEntries(Object.entries(paramsName).map(([key]) => [key: k, two]))]
}
}