2 回答

TA贡献1805条经验 获得超9个赞
查看调用 API 的结果,是这样的形式:
[
{"Country":"Micronesia, Federated States of","Slug":"micronesia","ISO2":"FM"},
{"Country":"Bangladesh","Slug":"bangladesh","ISO2":"BD"},
{"Country":"Bouvet Island","Slug":"bouvet-island","ISO2":"BV"},
// ...and so on...
]
所以Country不是数组,它是数组中每个对象的属性。
如果您的目标是Country从每个对象中提取属性,请获取数组,然后使用map提取该属性,也许使用解构:
const data = await axios.get(countriesURL);
return data.map(({Country}) => Country);

TA贡献1827条经验 获得超8个赞
重组在这里没有得到妥善处理。
const { data: [ x ] } = {data: [{"Country":"Micronesia, Federated States of","Slug":"micronesia","ISO2":"FM"},{"Country":"Bangladesh","Slug":"bangladesh","ISO2":"BD"}]}
这里x将{"Country":"Micronesia, Federated States of","Slug":"micronesia","ISO2":"FM"}
下一个:
const {Country} = x
国家将在这里"Micronesia, Federated States of"
and"Micronesia, Federated States of"是一个字符串,它没有map函数。
{ data: [ {Country} ] }访问所有密钥的错误方法也是如此。
const fetchCountries = async () => {
try {
const countries = await axios
.get(countriesURL)
.then((x) => x.data);
return countries.map(({ Country }) => Country);
} catch (error) {
console.log(error);
return []
}
};
const fetchCountries = async () => {
try {
const countries = await axios
.get("https://api.covid19api.com/countries")
.then((x) => x.data);
return countries.map(({ Country }) => Country).sort();
} catch (error) {
console.log(error);
return []
}
};
fetchCountries().then(console.log);
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
获取其他信息:
// const axios = require("axios"); // for node js
const fetchCountriesInfoParallel = async (countries = []) => {
const promises = countries.map((country) =>
axios
.get(`https://api.covid19api.com/live/country/${country}`)
.then(({ data }) => data)
);
try {
return await Promise.all(promises);
} catch (error) {
console.log(error);
return [];
}
};
fetchCountriesInfoParallel(["Afghanistan", "Albania", "Algeria"]).then(
console.log
);
const fetchCountriesInfoSeries = async (countries = []) => {
let results = [];
for (let index = 0; index < countries.length; index++) {
const country = countries[index];
const data = await axios
.get(`https://api.covid19api.com/live/country/${country}`)
.then(({ data }) => data);
results.push(data);
}
return results;
};
fetchCountriesInfoSeries(["Afghanistan", "Albania", "Algeria"]).then(
console.log
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js"></script>
添加回答
举报