javascript - 无法使用索引从我的数组中调用项目 - Javascript
问题描述
所以我得到了这段代码,它可以将来自 API 的数据推送到数组中,它有点工作。如果我将数组作为一个整体记录,它确实会显示整个数组,但如果我尝试在数组中记录特定对象,它会返回“未定义”。
我的代码如下:
let people = [];
fetch('https://randomuser.me/api/?results=10')
.then(function(response){
return response.json();
})
.then(function(data){
for(i=0; i<10; i++){
let person = data.results[i];
let x = {
name: person.name.first + " " +person.name.last,
picture: person.picture.large,
age: person.dob.age,
place: person.location.street + "<br>" + person.location.city + "<br>" + person.location.state
}
people.push(x);
}
}).catch(function(error){
console.log('Data is not shown ' + error.message);
});
console.log(people); // works fine
console.log(people[0]); // returns undefined
console.log(people.length); //returns 0
解决方案
@ibrahimyilmaz 是正确的:您希望在AJAX 请求完成后控制台日志使用您的people
数组。
您对阵列的处理取决于您自己。person
假设您有一个将 a 的名称插入DOM的函数:
function renderPersonsNameToHeader(person) {
var header = document.querySelector('h1');
header.innerText = person.name;
}
所以你的代码看起来像:
let people = [];
function renderPersonsNameToHeader(person) {
var header = document.querySelector('h1');
header.innerText = person.name;
}
fetch('https://randomuser.me/api/?results=10')
.then(function(response){
return response.json();
})
.then(function(data){
for(i=0; i<10; i++){
let person = data.results[i];
let x = {
name: person.name.first + " " +person.name.last,
picture: person.picture.large,
age: person.dob.age,
place: person.location.street + "<br>" + person.location.city + "<br>" + person.location.state
}
people.push(x);
}
// Now that our `people` array is built, we can use the data!
renderPersonsNameToHeader(people[0]);
}).catch(function(error){
onsole.log('Data is not shown ' + error.message);
});
推荐阅读
- sql - 如何将转换为 UTC 的当前时间戳与在 Oracle SQL 上转换为 UTC 的另一个时间戳进行比较?
- matlab - Fortran“全局”变量与 Matlab 函数句柄
- geolocation - 如何从 Here API 更新不正确的标准化位置
- java - 如何按顺序制作
- python-3.x - 尝试使用 selenium 使用代理但无法访问任何 Https 站点
- jquery - 花式树更改 selectMode 3 上当前选定项目的突出显示颜色
- regex - 无法使用 oracle 正则表达式在带有管道的复合分隔符上拆分
- json - 带有 JSON 主体的 GET 方法和带有 RestTemplate 的承载授权
- arangodb - 在 ArangoDB AQL 中,如何从图遍历中返回顶点和边?
- .net - 为什么 VBA 的 VarType 函数说这个 COM 对象是一个字符串?(对象是 .NET 的 System.Object 类的 COM 版本的实例。)这是一个错误吗?