我正在尝试从公众那里获得所有算法来挖掘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/