Получите уникальные значения от Json Object - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь получить все алгоритмы от общественности, что мне api:

var lookup = {}
var result = []

axios.get('https://whattomine.com/calculators.json')
  .then(function(response) {
    console.log(response)
    for (var item, i = 0; item = response["coins"][i++];) {
      var algorithm = item.algorithm

      if (!(algorithm in lookup)) {
        lookup[algorithm] = 1
        result.push(algorithm)
      }
    }
    console.log(result)
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>

Как видите, я использую axios для запроса API.Затем я хотел бы отфильтровать все алгоритмы, которые не находятся в поиске.

В результате я хотел бы получить: []

Однако в настоящее время я получаю ['Keccak', 'Scrypt-OG', 'X11'] назад.

Есть предложения, что я делаю не так?

Я ценю ваши ответы!

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Как уже говорили другие, response - это объект со свойством data, содержащий фактический ответ. Кроме того, вы пытаетесь зациклить их, как если бы это был массив, но это объект с именами монет в качестве свойств. Лодаш может сделать вашу жизнь проще:

axios.get('https://whattomine.com/calculators.json')
  .then(response => {
    const coins = response.data.coins;
    const result = _.uniq(_.map(coins, item => item.algorithm));
    console.log(result);
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
  • _.map() позволяет зацикливаться на массиве или объекте, что здесь полезно.

  • _.uniq() удалит любые дубликаты из массива значений.

0 голосов
/ 23 июня 2018

Вы должны увидеть структуру данных: ключ coins является строкой, а не числом, как i ++

var lookup = {}
var result = []

axios.get('https://whattomine.com/calculators.json')
  .then(function(response) {
    for (var key in response.data["coins"]) {
      var item = response.data["coins"][key]
      var algorithm = item.algorithm

      if (!(algorithm in lookup)) {
        lookup[algorithm] = 1
        result.push(algorithm)
      }
    }
    console.log(result)
  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...