преобразовать ключ объекта со значениями массива в строку запроса - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь преобразовать свой объект в строку запроса, но у меня есть массив значений

мой объект выглядит так

filterChoice: { role: ["SW", "EW"] source: ["Secondary", "Tertiary"] }

I Я прошел половину пути с моим преобразованием

const toQueryString = `?${Object.keys(filterChoice)
    .map(key => `${key}=${filterChoice[key].toString()}`)
    .join('&')}`

, которое выводит: ?source=Secondary,Tertiary&role=SW,EW, но я хотел бы, чтобы этот вывод выглядел так

?source=Secondary&source=Tertiary&role=SW&role=EW

Может ли кто-нибудь помочь меня?

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

Вы можете отобразить записи объекта FlatMap:

 const query = Object.entries(filterChoice)
  .flatMap(([key, value]) => [value].flat().map(v => [key, v]))
  .map(it => it.join("="))
  .join("&");
0 голосов
/ 05 мая 2020

Вы можете использовать URLSearchParam и перебирать Object.keys, а затем каждое из значений

https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams

var filterChoice = {
  role: ["SW", "EW"],
  source: ["Secondary", "Tertiary"]
}

var URL = "https://example.com/";
var searchParams = new URLSearchParams(URL);

Object.keys(filterChoice).forEach(key => {
  filterChoice[key].forEach(val => {
    searchParams.append(key, val);
  })
})


console.log(
  searchParams.toString()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...