我有一个映射在表中的数组,我想检查对象属性“userName”是否与标题相同,因此我知道该值的放置位置,否则应显示为“0”。
下面是映射完成后的表格:
{report.data.map(obj => (
<React.Fragment>
<TableCell>{obj.userName === users[0] ? obj.workedHours : "0"}</TableCell>
<TableCell>{obj.userName === users[1] ? obj.workedHours : "0"}</TableCell>
<TableCell>{obj.userName === users[2] ? obj.workedHours : "0"}</TableCell>
</React.Fragment>
))}
在映射函数中,用户只是用户喜欢的数组
users = ["User 1", "User 2", "User 3"]
并且report.data
是每个项目的对象数组:
[{userName: "User 1", rate: 5, clientName: "client A", workedHours: 8},
{userName: "User 2", rate: 3, clientName: "client B", workedHours: 5}]
这就是表格的结束方式:
你能帮我在每个用户存在的地方显示它的价值,否则显示“0”吗?
感谢您的时间
我创建了一个反应示例。
通过迭代标题列的用户,我使它更加动态。
如果用户在多个客户端上工作,数据将如何显示?
const users = ["User 1", "User 2", "User 3"];
const projects = [
{
projectName: "project 1",
data: [
{userName: "User 1", rate: 5, clientName: "client A", workedHours: 8},
{userName: "User 2", rate: 3, clientName: "client B", workedHours: 5}
]
},
{
projectName: "project 2",
data: [
{userName: "User 3", rate: 6, clientName: "client A", workedHours: 5}
]
}
]
ReactDOM.render(
<table>
<tr>
<td>Project:</td>
{users.map(user => (
<td><span>{user}</span></td>
))}
</tr>
{projects.map(project => (
<tr>
<td><span>{project.projectName}</span></td>
{users.map(user => {
// Filter for only users that has worked on the project
const usersOnProject = project.data.filter(obj => obj.userName === user)
// If there is users on the project, iterate them
if(usersOnProject.length) {
return (
<td>
{usersOnProject.map(obj => obj.userName === user && obj.workedHours)}
</td>
)
}
// Else if no users on the project, return 0
return (
<td>0</td>
)
})}
</tr>
))}
</table>,
document.getElementById('root')
);
table {
border-collapse: collapse;
font-family: sans-serif;
font-size: 14px;
}
table td + td, table th + th {
text-align: center;
border-collapse:
}
span {
color: red;
}
td, th {
padding: 3px;
border-bottom: 1px solid #ccc;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句