我试图从其他国家 API v3.1 获取货币数据:https://restcountries.com/v3.1/all。我想做的是获取以美元为货币的国家/地区的名称,并将其打印在浏览器控制台中。
我尝试了以下代码:
let xhr = new XMLHttpRequest();
xhr.open("GET", "https://restcountries.com/v3.1/all")
xhr.send();
xhr.onload = () => {
let data = JSON.parse(xhr.response)
let answer = data.filter((dummy) => (dummy.currencies !== undefined))
let realanswer = answer.filter((dollar) => (dollar.currencies.name === "United States dollar"))
console.log(realanswer)
}
但是我在输出中得到一个空数组,其中没有数据。
我尝试通过rest states api v2获取所需的数据:https://restcountries.com/v2/all 并通过以下代码获取了我需要的数据:
let xhr = new XMLHttpRequest();
xhr.open("GET", "https://restcountries.com/v2/all")
xhr.send();
xhr.onload = () => {
let data = JSON.parse(xhr.response)
let answer = data.filter((dummy) => (dummy.currencies !== undefined))
let realanswer = answer.filter((dollar) => (dollar.currencies[0].name === "United States dollar"))
console.log(realanswer)
}
谁能告诉我为什么我没有从其他国家/地区 API v3.1 获取数据?另外我想告诉您,在 v2.0 中,货币数据存储在数组中,但在 3.1 中,它存储在对象中。我不知道如何使用 v3.1 访问货币数据。我也想仅借助过滤方法来获取数据。请帮忙!!
// Hello Check this out it works absolutely fine
let xhr = new XMLHttpRequest();
xhr.open("GET", "https://restcountries.com/v3.1/all")
xhr.send();
xhr.onload = () => {
let data = JSON.parse(xhr.response)
/* console.log(data) */
let answer = data.filter((dummy) => (dummy.currencies !== undefined))
console.log(answer.length)
let realanswer = answer.filter((data) => {
for (let key in data.currencies) {
if(data.currencies[key].name === "United States dollar"){
return data
}
}
})
console.log(realanswer.length, realanswer[0].currencies)
}
对stackzebra的回答: 其实你可以用这个公式:
Object.keys(
data. Currencies
)[0]
用于从这样的对象中提取数据,如果没有其他货币选项,您可以省略 [0] 我希望这能解决您的问题
数据[0].货币?
${ data[0].currencies[Object.keys(data[0].currencies)[0]].name }
:“”;