Как получить динамический доступ к индексу массива ответа на вызов API - PullRequest
0 голосов
/ 02 июля 2019

Я использую API Yelp для возврата списка предприятий, ответ - это объект, у которого есть ключ, называемый «бизнес», значение этого ключа - массив из 20 элементов, эти объекты являются объектами, но я не уверен как получить доступ к каждому элементу в массиве без жесткого кодирования, например, массива [0] Я хотел бы использовать переменную для динамического доступа к индексу массива, поэтому мне не нужно будет вводить 0,1 и т. д., и я смогу для ввода индекса, необходимого для получения идентификатора или местоположения для каждого элемента в этом массиве, вот пример business[vartoaccesseachindex].id. Причина этого в том, что я использую функцию .map () для возврата нового массива объектов со значениями, которые мне нужны из ответа.

Вот объект из ответа

…}
​
businesses: (20) […]
​​
0: Object { id: "uJZgom8HpK74xz8IojpT0A", alias: "pizzeria-beddia-philadelphia", name: "Pizzeria Beddia", … }
​​
1: Object { id: "M_EpyAH1CZZVlhxfYBLOqg", alias: "nomad-pizza-company-philadelphia", name: "Nomad Pizza Company", … }
​​
2: Object { id: "wuH4TPUo8oJo4E59xZKsNg", alias: "and-pizza-philadelphia", name: "&pizza", … }
​​
3: Object { id: "VSDdUwXktnvL_O0meKv7MQ", alias: "alice-pizza-philadelphia", name: "Alice Pizza", … }
​​
4: Object { id: "jyBbsc6LrIwdJYD9jFuiaw", alias: "aldo-and-manny-pizza-and-pasta-philadelphia", name: "Aldo and Manny Pizza and Pasta", … }
​​
5: Object { id: "cFSyJluKa2SHtgMMvlx6SQ", alias: "angelos-pizzeria-philadelphia", name: "Angelo's Pizzeria", … }
​​
6: Object { id: "jNxvJeAUzzpC7zW3UN78HA", alias: "pizza-shackamaxon-philadelphia", name: "Pizza Shackamaxon", … }
​​
7: Object { id: "4PyqPHAiFopyZZlLcLQuVg", alias: "d-oliva-evoo-pizza-and-grill-philadelphia", name: "D'Oliva evoo Pizza & Grill", … }
​​
8: Object { id: "0-JRAY0LpBazDuA9761U5w", alias: "pizzeria-vetri-philadelphia-6", name: "Pizzeria Vetri", … }
​​
9: Object { id: "IzyQVIJG8JAnOiRQPb0-wg", alias: "rione-philadelphia", name: "Rione", … }
​​
10: Object { id: "7pwZZVVlYCxQvVdd8Q03wg", alias: "la-rosa-pizzeria-philadelphia", name: "La Rosa Pizzeria", … }
​​
11: Object { id: "u7_3L1NBWgxhBM_B-cmmnA", alias: "pizzeria-vetri-philadelphia-5", name: "Pizzeria Vetri", … }
​​
12: Object { id: "bmJgvpuf2GBXd62ELK0Q2w", alias: "luigis-pizza-fresca-philadelphia", name: "Luigi's Pizza Fresca", … }
​​
13: Object { id: "5Fm6khB-De-OdqATep9J9Q", alias: "nypd-pizza-philadelphia", name: "NYPD Pizza", … }
​​
14: Object { id: "Mna6U7kUX36l8-dpDt-U-A", alias: "gianfranco-pizza-rustica-philadelphia", name: "Gianfranco Pizza Rustica", … }
​​
15: Object { id: "TKPAyOWcexkpVHPCdYTNmQ", alias: "spuntino-wood-fired-pizza-philadelphia", name: "Spuntino Wood Fired Pizza", … }
​​
16: Object { id: "sL6fC0P4C-gyL4E5gacUeQ", alias: "lazaros-pizzeria-and-grill-philadelphia-2", name: "Lazaro's Pizzeria & Grill", … }
​​
17: Object { id: "I1H5s9cVCGh1nH-4bhsSDA", alias: "santuccis-original-square-pizza-philadelphia-2", name: "Santucci's Original Square Pizza", … }
​​
18: Object { id: "6ajnOk0GcY9xbb5Ocaw8Gw", alias: "barbuzzo-philadelphia", name: "Barbuzzo", … }
​​
19: Object { id: "vC98a0bIcSDVfX3dOuuAkQ", alias: "yummy-pizza-philadelphia", name: "Yummy Pizza", … }

Вот мой JS-код. Это функция .map (), которая возвращает новый объект с извлеченной информацией. Извлеченная информация будет сохранена в паре ключ / значение, поэтому id должен получить доступ к идентификатору business [vartoaccesseachindex], imageSrc должен получить доступ к business [vartoaccesseachindex] .imageSrc.

jsonResponse.businesses.map( business => {
            return {
                id: business[vartoaccesseachindex],
                imageSrc: business,
                name: business,
                address:  business,
                city: business,
                state:  business,
                zipCode:  business,
                category: business,
                rating: business,
                reviewCount:  business,
            }
          });

Любые ответы очень ценятся.

1 Ответ

0 голосов
/ 02 июля 2019

Обратный вызов map уже предоставил нужный вам объект.Если вам действительно нужен индекс, он предоставляется в качестве второго параметра.

const jsonResponse = {
  more: {stuff: 'here'},
  businesses: [
    { id: "uJZgom8HpK74xz8IojpT0A", alias: "pizzeria-beddia-philadelphia", name: "Pizzeria Beddia"},
    { id: "M_EpyAH1CZZVlhxfYBLOqg", alias: "nomad-pizza-company-philadelphia", name: "Nomad Pizza Company"},
    { id: "wuH4TPUo8oJo4E59xZKsNg", alias: "and-pizza-philadelphia", name: "&pizza"},
    // ... 
  ]
}

const myData = jsonResponse .businesses .map ( (business, index) => ({
  id: business.id,
  index: index,
  name: business.name,
  // ... 
}))

console .log (
  myData
)

Мой вопрос, однако, заключается в том, копируете ли вы весь объект со своим списком свойств.И если да, то зачем?Почему бы просто не использовать business объекты, доступные в вашем массиве?

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