使用过滤器方法从其他国家 API v3 获取数据

问题描述 投票:0回答:4

我试图从其他国家 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 访问货币数据。我也想仅借助过滤方法来获取数据。请帮忙!!

javascript api filter currency
4个回答
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)
}


0
投票

因为在v3.1中不只是

currencies.name
,而是这样的:


0
投票

stackzebra的回答: 其实你可以用这个公式:

Object.keys(
          data. Currencies
        )[0]

用于从这样的对象中提取数据,如果没有其他货币选项,您可以省略 [0] 我希望这能解决您的问题


0
投票

数据[0].货币?

${ data[0].currencies[Object.keys(data[0].currencies)[0]].name }
:“”;

© www.soinside.com 2019 - 2024. All rights reserved.