Я получаю "undefined" при попытке получить ETH последнюю цену от CMC - PullRequest
0 голосов
/ 05 января 2020

У меня есть небольшой виджет цены, который дает мне последнюю цену ethereum на CM C

<script>
  $.ajax({

    url : 'https://api.coinmarketcap.com/v1/ticker/ethereum/',
    type : 'GET',
    data : {
        'numberOfWords' : 10
    },
    dataType:'json',
    success : function(data) {
        console.log(data);
    },
    error : function(request,error)
    {
        console.log('Error by getting the ETH price');
    }
  });
  </script>

URL-адрес поставляется со всеми этими данными

[
{
"id": "ethereum",
"name": "Ethereum",
"symbol": "ETH",
"rank": "2",
"price_usd": "138.566166052",
"price_btc": "0.01850224",
"24h_volume_usd": "7342353696.2",
"market_cap_usd": "15125162393.0",
"available_supply": "109154802.0",
"total_supply": "109154802.0",
"max_supply": null,
"percent_change_1h": "-0.34",
"percent_change_24h": "2.83",
"percent_change_7d": "3.31",
"last_updated": "1578254485"
}
]

Мой вывод console.log говорит, что я не определен для price_usd:

console.log(data[4]); 

как я могу получить доступ к price_usd?

1 Ответ

1 голос
/ 05 января 2020

Для переменной data у вас есть массив, который содержит объект со своими свойствами. Для доступа к этому объекту вы можете использовать data[0], который является первым элементом массива. Тогда свойства как data[0].propertyName.

Если у вас есть только 1 элемент в массиве, вы можете сделать так: data[0].price_usd. Но стоит проверить, есть ли у него значения или нет: data && data.length > 0 ? data[0].price_usd : undefined.

Например:

const data = [{
    "id": "ethereum",
    "name": "Ethereum",
    "symbol": "ETH",
    "rank": "2",
    "price_usd": "138.566166052",
    "price_btc": "0.01850224",
    "24h_volume_usd": "7342353696.2",
    "market_cap_usd": "15125162393.0",
    "available_supply": "109154802.0",
    "total_supply": "109154802.0",
    "max_supply": null,
    "percent_change_1h": "-0.34",
    "percent_change_24h": "2.83",
    "percent_change_7d": "3.31",
    "last_updated": "1578254485"
}];

const result = data && data.length > 0 ? data[0].price_usd : undefined;
console.log(result);

В этом случае вы можете получить доступ к data[] элементам массива, но не к свойствам:

const data = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(data[4]);

Или, что еще лучше, подумайте о следующем:

const data = [{price_usd: 123}];
const firstElementOfArray = data[0];

console.log({firstElementOfArray});
console.log('price_usd', firstElementOfArray.price_usd);

Предлагаю прочитать для лучшего понимания:

  1. https://www.w3schools.com/js/js_arrays.asp
  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

Надеюсь, это поможет!

...