Как я могу отобразить этот объект в реакции

avatar
Mohamed Ahmed
9 августа 2021 в 06:09
52
1
-3

У меня есть ответ от сервера вроде этого:

{
  "response_code": 200,
  "tickets": {
      "3": {
          "117": "http://....../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"
      },
      "4": {
          "118": "http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"
      },
      "5": {
          "119": "http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"
      },
      "6": {
          "120": "http://.../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"
      },
      "7": {
          "121": ""
      },
      "8": {
          "122": "http://..../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"
      },
    }
  }
}

и я должен отображать эти ссылки на веб-сайтах, так как это должен быть массив, но это массив так что есть подсказки, как я могу отображать эти ссылки в приложении для реагирования или как я могу преобразовать их в массив, чтобы я мог легко их отображать?

Источник
Andy
9 августа 2021 в 06:13
1

map по Object.values(data.tickets). Object.values дает вам массив объектов.

Eldar B.
9 августа 2021 в 06:25
0

Отвечает ли это на ваш вопрос? Как визуализировать объект в React?

Ответы (1)

avatar
Phil
9 августа 2021 в 06:14
1

Если вы просто хотите преобразовать объект tickets в массив URL-адресов (игнорируя любой из этих цифровых ключей), вы можете сделать это с помощью Object.values() и Array. прототип.flatMap()

const obj = {"response_code":200,"tickets":{"3":{"117":"http://....../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"},"4":{"118":"http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"},"5":{"119":"http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"},"6":{"120":"http://.../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"},"7":{"121":""},"8":{"122":"http://..../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf"}}}

const tickets = Object.values(obj.tickets).flatMap(Object.values)

console.log(tickets)