Javascript 如何获取对象的元素?

Javascript 如何获取对象的元素?,javascript,json,api,Javascript,Json,Api,我想从API端点()访问对象的一个元素,更准确地说是“货币”中的“名称”,但它总是返回未定义的 我试过currencies.name和currencies[“name”]但都不管用 const countries = document.getElementById('countries'); var request = new XMLHttpRequest(); request.open('GET', 'https://restcountries.eu/rest/v2/all', true)

我想从API端点()访问对象的一个元素,更准确地说是“货币”中的“名称”,但它总是返回未定义的

我试过currencies.name和currencies[“name”]但都不管用

const countries = document.getElementById('countries');

var request = new XMLHttpRequest();

request.open('GET', 'https://restcountries.eu/rest/v2/all', true);

data.forEach(name => {
        const h1 = document.createElement('h1');
        h1.textContent = name.capital; //this one works just fine

        const h2 = document.createElement('h2');
        h2.textContent = name.currencies.name; //the problem is in here

        countries.appendChild(h1);
        countries.appendChild(h2);
 });

例如,我想得到“阿富汗阿富汗人”,不像以前那样没有定义。

你的问题在于
货币
是一个数组


您必须说
name.currencies[0].name
,或者如果您有多个货币,则必须迭代数组以获取所有货币

您的问题在于
货币
是一个数组


您必须说
name.currencies[0].name
,或者如果您有多个货币,则必须迭代数组以获取所有货币

问题在于货币是一个数组


因此,您应该使用c
urrencies[0]。例如,name
来获取第一种货币的名称。

问题是货币是一个数组


因此,您应该使用c
urrencies[0]。例如,name
来获取第一种货币的名称。

您可以执行以下操作,并且您不必担心一个国家是否有一种以上的货币:

const countries = document.getElementById('countries');
const request = new XMLHttpRequest();

request.open('GET', 'https://restcountries.eu/rest/v2/all', true);

request.onload = function (e) {
  if (request.readyState === 4) {
    if (request.status === 200) {

      const data = JSON.parse(request.responseText);

      data.forEach(function(item){

        //add country
        const h1 = document.createElement('h1');
        h1.textContent = item.name; 
        countries.appendChild(h1);

        //add currencies
        item.currencies.forEach(function(currency){
          const h2 = document.createElement('h2');
          h2.textContent = currency.name; 
          countries.appendChild(h2);
        });

      });  

    } else {
      console.error(request.statusText);
    }
  }
};

request.onerror = function (e) {
  console.error(request.statusText);
};

request.send(null);

您可以执行以下操作,如果一个国家有多种货币,您不必担心:

const countries = document.getElementById('countries');
const request = new XMLHttpRequest();

request.open('GET', 'https://restcountries.eu/rest/v2/all', true);

request.onload = function (e) {
  if (request.readyState === 4) {
    if (request.status === 200) {

      const data = JSON.parse(request.responseText);

      data.forEach(function(item){

        //add country
        const h1 = document.createElement('h1');
        h1.textContent = item.name; 
        countries.appendChild(h1);

        //add currencies
        item.currencies.forEach(function(currency){
          const h2 = document.createElement('h2');
          h2.textContent = currency.name; 
          countries.appendChild(h2);
        });

      });  

    } else {
      console.error(request.statusText);
    }
  }
};

request.onerror = function (e) {
  console.error(request.statusText);
};

request.send(null);