Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 映射函数中的条件表单元格_Javascript_Arrays_Reactjs_Material Ui - Fatal编程技术网

Javascript 映射函数中的条件表单元格

Javascript 映射函数中的条件表单元格,javascript,arrays,reactjs,material-ui,Javascript,Arrays,Reactjs,Material Ui,我有一个映射到表中的数组,我想检查对象属性“userName”是否与标题相同,以便我知道将该值放置在何处,否则应显示为“0” 以下是完成映射后的表格: {report.data.map(obj => ( <React.Fragment> <TableCell>{obj.userName === users[0] ? obj.workedHours : "0"}</T

我有一个映射到表中的数组,我想检查对象属性“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>
                ))}
report.data
是每个项目的对象数组:

[{userName: "User 1", rate: 5, clientName: "client A", workedHours: 8},
 {userName: "User 2", rate: 3, clientName: "client B", workedHours: 5}]
这就是表格的结尾:

你能帮我在每个用户存在的地方显示其值,否则显示“0”吗


感谢您抽出时间

我创建了一个react示例

我通过迭代用户的标题列,使它更具动态性

如果一个用户在多个客户端上工作,数据会是什么样子

constusers=[“用户1”、“用户2”、“用户3”];
施工项目=[
{
项目名称:“项目1”,
数据:[
{用户名:“用户1”,费率:5,客户端名称:“客户端A”,工作时间:8},
{用户名:“用户2”,费率:3,客户端名称:“客户端B”,工作时间:5}
]
}, 
{
项目名称:“项目2”,
数据:[
{用户名:“用户3”,费率:6,客户端名称:“客户端A”,工作时间:5}
]
}
]
ReactDOM.render(
项目:
{users.map(user=>(
{user}
))}
{projects.map(project=>(
{project.projectName}
{users.map(user=>{
//仅筛选在项目中工作过的用户
const usersOnProject=project.data.filter(obj=>obj.userName==user)
//如果项目中有用户,请迭代他们
if(usersOnProject.length){
返回(
{usersOnProject.map(obj=>obj.userName==user&&obj.workedHours)}
)
}
//否则,如果项目上没有用户,则返回0
返回(
0
)
})}
))}
,
document.getElementById('root'))
);
表格{
边界塌陷:塌陷;
字体系列:无衬线;
字体大小:14px;
}
表td+td,表th+th{
文本对齐:居中;
边界塌陷:
}
跨度{
颜色:红色;
}
td,th{
填充:3倍;
边框底部:1px实心#ccc;
}

我创建了一个react示例

我通过迭代用户的标题列,使它更具动态性

如果一个用户在多个客户端上工作,数据会是什么样子

constusers=[“用户1”、“用户2”、“用户3”];
施工项目=[
{
项目名称:“项目1”,
数据:[
{用户名:“用户1”,费率:5,客户端名称:“客户端A”,工作时间:8},
{用户名:“用户2”,费率:3,客户端名称:“客户端B”,工作时间:5}
]
}, 
{
项目名称:“项目2”,
数据:[
{用户名:“用户3”,费率:6,客户端名称:“客户端A”,工作时间:5}
]
}
]
ReactDOM.render(
项目:
{users.map(user=>(
{user}
))}
{projects.map(project=>(
{project.projectName}
{users.map(user=>{
//仅筛选在项目中工作过的用户
const usersOnProject=project.data.filter(obj=>obj.userName==user)
//如果项目中有用户,请迭代他们
if(usersOnProject.length){
返回(
{usersOnProject.map(obj=>obj.userName==user&&obj.workedHours)}
)
}
//否则,如果项目上没有用户,则返回0
返回(
0
)
})}
))}
,
document.getElementById('root'))
);
表格{
边界塌陷:塌陷;
字体系列:无衬线;
字体大小:14px;
}
表td+td,表th+th{
文本对齐:居中;
边界塌陷:
}
跨度{
颜色:红色;
}
td,th{
填充:3倍;
边框底部:1px实心#ccc;
}


您的
报告.data
是什么样子的?编辑此帖子以显示
报告.data
的样子。谢谢你的提醒你看到外壳的不同了吗?“User 1”===“User 1”将始终为false,因为大写字母是“U”。我认为您只需要
obj.userName.toLowerCase()===users[0]。toLowerCase()
@BjørnNyborg从这个角度来看,实际数据是可以的,这里只是写了个例子,但谢谢,我更正了你的
报告.数据
是什么样子的?编辑了这篇文章,展示了
报告.数据
的样子。谢谢你的提醒你看到外壳的不同了吗?“User 1”===“User 1”将始终为false,因为大写字母是“U”。我认为您只需要
obj.userName.toLowerCase()===users[0]。toLowerCase()
@BjørnNyborg从这个角度来看,实际数据是可以的,这里只是写了个例子,但谢谢,我纠正了您给我一个映射用户的想法,但是问题不在于
clientName
,它还没有被使用,只是出现在object中,而是如果有更多的用户在同一个项目上工作。正如您在问题所附的照片中看到的,它没有在第一行的下一个值上显示:“1 8 2.5”而是显示“0 0 2.5 | 1 0 0 | 0 8 0”,即使使用
{report.data.map(obj=>(users.map)(user=>({obj.userName==user?obj.workedHours:“0”)也一样)}
如果有多个用户在同一个项目上工作,您能提供一个数据示例吗?我的第一个对象数组如下:
[{projectName:“project 1”,数据:[{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}]}
。由此,我使用projectName作为每行的第一个单元格,然后映射
[{userName: "User 1", rate: 5, clientName: "client A", workedHours: 8},
 {userName: "User 2", rate: 3, clientName: "client B", workedHours: 5}]