我有一个条件,如果报告日期大于或等于其开始日期,则应显示一个母版。并且基于此条件以使其正常工作(也就是说,仅显示了一个母版,而不是多个母版),我添加了另一个条件,该条件根据先前的条件找到了最高值,并且实际上应该显示一个母版。但是这种情况不起作用。 if (Math.max(...this.masters.map(master => new Date(master.date_work).getTime()))){}
。因此,将显示所有开始日期小于日期报告的向导。我不明白为什么它不起作用。可以应用这种排序吗?
this.filteredMasters.push(master => master.date_work.sort((a, b) => new Date(b.date_work).getTime() - new Date(a.date_work).getTime()))
但是数据不再出现。我的意思是,数据不再显示。
if (this.mastersService) {
this.mastersService.fetch().subscribe(
master => {
this.filteredMasters = []
this.masters = master
for(let team of this.filteredTeams){
for(let master of this.masters){
if (master.teams_id == team.team_id) {
if (new Date(master.date_work) <= (new Date(this.selectedRep4Hour.report_date))) {
if (Math.max(...this.masters.map(master => new Date(master.date_work).getTime()))) {
this.filteredMasters.push(master)
}
}
}
}
}
}
)
}
大师作品开始的日期不能相同,因为date_work
字段是唯一的。
html:
<div *ngFor="let team of filteredTeams">
<div *ngFor="let master of filteredMasters">
{{master.name}}
</div>
</div>
答案 0 :(得分:1)
当您将this.filteredMasters
放入Math.max
时,它将继续推送if condition
中的所有值。因此,if condition
将始终为真,因为Math.max
将始终返回一些最大值。
您可以通过以下方式更改代码:
if (this.mastersService) {
this.mastersService.fetch().subscribe(
master => {
this.filteredMasters = []
this.masters = master
const maxValue = <Add some default MIN value>
const maxMaster = <Add some default value>
for(let team of this.filteredTeams){
for(let master of this.masters){
if (master.teams_id == team.team_id) {
if (new Date(master.date_work) <= (new Date(this.selectedRep4Hour.report_date))) {
// this.filteredMasters.push(master)
const curr = Math.max(...this.masters.map(master => new Date(master.date_work).getTime()));
if (maxValue < curr) {
maxValue = curr;
maxMaster = master;
}
}
}
}
this.filteredMasters.push(maxMaster);
}
}
)
}