微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 JavaScript 中的对象数组中获取属性值

如何解决如何从 JavaScript 中的对象数组中获取属性值

我想从一个包含对象数组的 JSON 文件中创建一个包含国家名称的数组。这些对象有一个属性 name 和国家名称,这正是我所需要的。

这是我的 JavaScript 代码,它返回一个 undefined 列表,而不是国家/地区名称

import axios from 'axios';

const getTeamsFromUrl = async() => {
    const url = 'https://gist.githubusercontent.com/keeguon/2310008/raw/bdc2ce1c1e3f28f9cab5b4393c7549f38361be4e/countries.json';
    const response = await axios.get(url);
    const listofCountries = response.data;

    // this console.log prints properly the array of objects
    // console.log(listofCountries);

    for (let i = 0; i < listofCountries.length; i++) {
        console.log(listofCountries[i].name);
    }
}

console.log(await getTeamsFromUrl());

另一方面,如果我使用 forEach,则会收到以下错误消息: listofCountries.forEach 不是函数

let x = listofCountries.forEach(country => {
     console.log(country.name);
});

提前致谢!

解决方法

您的代码很好,但您的源 json 无效。这是经过测试的,它可以从其他来源工作。

const getTeamsFromUrl = async() => {
    const url = 'https://raw.githubusercontent.com/samayo/country-json/master/src/country-by-name.json';
    const response = await axios.get(url);
    const listOfCountries = response.data;

    // this console.log prints properly the array of objects
    // console.log(listOfCountries);

    for (let i = 0; i < listOfCountries.length; i++) {
        console.log(listOfCountries[i].country);
    }
}
getTeamsFromUrl();
,

response.data 返回一个需要解析为数组的字符串。它还返回一个不是有效 JSON 的字符串,因此需要对其进行一些工作才能创建有效的 JSON。

以下代码根据您的原始 URL 执行此操作并打印出国家/地区名称:

const axios = require('axios');
const getTeamsFromUrl = async () => {
    const url = 'https://gist.githubusercontent.com/keeguon/2310008/raw/bdc2ce1c1e3f28f9cab5b4393c7549f38361be4e/countries.json';
    const response = await axios.get(url);
    const listOfCountries = response.data;
    const jsonListOfCountries = listOfCountries.replace(/name:/g,'"name":').replace(/code:/g,'"code":').replace(/'/g,'"');
    const countries = JSON.parse(jsonListOfCountries);
    for (let i = 0; i < countries.length; i++) {
        console.log(countries[i].name);
    }
}

(async function MyFunc() {
    console.log(await getTeamsFromUrl());
})();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。