如何解决如何从 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 举报,一经查实,本站将立刻删除。