我正在尝试从公众那里获得所有算法来挖掘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。然后,我想过滤掉所有不在查找中的算法。

结果,我希望拥有:
[]

但是,我现在回来了。

有什么建议我做错了吗?

感谢您的答复!

最佳答案

正如其他人所说,response是具有data属性的对象,包含实际响应。另外,您试图像遍历数组一样遍历它们,但这是一个将硬币名称作为属性的对象。 Lodash可以使您的生活更轻松:



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()将从值数组中删除所有重复项。

关于javascript - 从Json Object获取唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51000849/

10-13 08:49