javascript - 为什么我无法访问数组内的对象值?
问题描述
我正在开发反应应用程序,并且我已经调用了后端来检索数据。使用 检索来自后端的数据res.status(200).json(user)
。响应中的调用是
import React, { useState, useEffect } from 'react';
import UserService from '../services/user.service';
const AdminBoard = () => {
const [content, setContent] = useState('');
useEffect(() => {
UserService.getAdminBoard().then(
(response) => {
setContent(response.data);
},
(error) => {
const _content =
(error.response &&
error.response.data &&
error.response.data.message) ||
error.message ||
error.toString();
setContent(_content);
}
);
}, []);
console.log(content);
return (
<div className='container'>
<header className='jumbotron'>
<h4>List of users</h4>
{content &&
content.map((item) => (
<div key={item.username}>
<div className='container p-3 my-3 bg-dark text-white'>
<strong>Username:</strong>
<h4>
<div>{item.username}</div>
</h4>
<strong>Email:</strong>
<h4>{item.email}</h4>
<strong>Role:</strong>
<h4>{item.roles.name}</h4> //I'm not getting role name
</div>
</div>
))}
</header>
</div>
);
};
export default AdminBoard;
现在,当我console.log
满足时,我得到:
0: {name: "New Name", username: "agent", email: "agent@gmail.com", roles: Array(1)}
1: {name: "admin", username: "admin", email: "email@gmail.com", roles: Array(1)}
etc
现在,当我使用content.map
withitem.name
并将它们集成到我的代码中时,我可以轻松地获取我的值。但是当我尝试从角色中提取价值时,我遇到了一个问题。现在,当我console.log
content.roles 时,我得到了未定义。
我想从此数组中获取名称。但是我尝试了很多方法:
console.log(content.roles.name)
console.log(content.roles['name'])
console.log(content.roles[0].name)
等等。我也尝试过在 StackOverflow 上找到的几个 forEach 循环,但我总是无法读取未定义的属性。
我的问题是:
- 这是一个对象数组还是带有对象数组的对象?
- 有没有一种方法可以在没有循环的情况下访问这些值?
解决方案
看起来您在另一个数组中有一个对象数组。因此,您需要像这样访问给定的角色名称:
content[0].roles[0].name
推荐阅读
- azure - xamarin Forms Azure 通知中心
- r - 为什么“R help”对某些命令不起作用?
- image - 错误地将图像上传到浏览器
- sql - 如何根据这个特定的日期条件过滤我的表格?
- python - 爬行蜘蛛并安排它们
- generalization - 我应该更喜欢易于阅读的代码还是易于编写的代码?
- python - 使用python从指向pdf的链接中提取页码
- indexing - pytorch中具有2个相同形状的张量的Argmax索引
- javascript - 在 Javascript 中使用函数构造函数和原型检索表单数据
- python - Imageio python Heroku只读访问错误