如何显示最高值

时间:2018-12-27 05:12:26

标签: angular typescript

我有一个条件,如果报告日期大于或等于其开始日期,则应显示一个母版。并且基于此条件以使其正常工作(也就是说,仅显示了一个母版,而不是多个母版),我添加了另一个条件,该条件根据先前的条件找到了最高值,并且实际上应该显示一个母版。但是这种情况不起作用。 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>

1 个答案:

答案 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);
      }
    }
  )
}