Получить индекс объекта внутри объекта - PullRequest
0 голосов
/ 09 мая 2018

Я использую этот https://api.coinmarketcap.com/v2/ticker/?limit=10 API для просмотра цен на различные криптовалюты.

Моя конечная цель - пройтись по ней сверху вниз и получить названия валют с соответствующими ценами. Тем не менее, кажется, я не могу получить индекс объекта в объекте «данных». Я не могу выбрать его с помощью [], потому что он не содержится в массиве.

Если вы посмотрите на https://api.coinmarketcap.com/v2/ticker/?limit=10, вы заметите, что третьим элементом в объекте «data» является объект, содержащий информацию для валюты Ripple.

Как я могу получить этот объект самостоятельно только из значения его индекса?

Кстати, я использую jQuery, получаю доступ к API следующим образом:

$.getJSON("https://api.coinmarketcap.com/v2/ticker/?limit=10", function(param) {

});

Ответы [ 4 ]

0 голосов
/ 09 мая 2018

Вы можете преобразовать объект в массив, используя Object.values. Для цикла по массиву вы можете использовать forEach

$.getJSON("https://api.coinmarketcap.com/v2/ticker/?limit=10", function(response) {
  Object.values(response.data).forEach(o => {
    console.log(o.name, o.quotes.USD.price);
  })
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Если вы хотите найти конкретный name, вы можете использовать find

$.getJSON("https://api.coinmarketcap.com/v2/ticker/?limit=10", function(response) {
  let toFind = 'Ripple';
  let result = Object.values(response.data).find(o => o.name === toFind);

  console.log(result.name, result.quotes.USD.price);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0 голосов
/ 09 мая 2018

Вы можете проанализировать ответ JSON в объекте, используя метод JSON.parse (). После этого перебирайте объекты.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse

0 голосов
/ 09 мая 2018

Вы можете получить все ключи объекта, затем перейти к нему, сравнить название валюты.

$.getJSON("https://api.coinmarketcap.com/v2/ticker/?limit=10", function(param) {
var objkeys = Object.keys(param.data);
objkeys.forEach(function(item){
  if(param.data[item].name==='Ripple'){
    console.log(param.data[item])
  }
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0 голосов
/ 09 мая 2018

Поскольку ответом является объект, содержащий data в качестве другого объекта, вы можете использовать цикл for...of для перебора коллекции и применения вашей логики.

Ниже приводится демонстрация итерации и печати названий и цен валют.

$.getJSON("https://api.coinmarketcap.com/v2/ticker/?limit=10", function(response) {
  for (let [_, value] of Object.entries(response.data)) {
    console.log(`Currency: ${value.name}, Price: $${value.quotes.USD.price}`);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...