【问题标题】:Optimization of looping in Pug/Node.js [closed]Pug/Node.js 中循环的优化 [关闭]
【发布时间】:2021-12-12 13:08:14
【问题描述】:

我正在尝试优化 Pug/Node.js/Express 中的循环语句,如下所示。 简单地说,我从数据库中读取状态数据(“portMap2 中的每个端口映射”),然后检查 st1、st2、st3、...、st12 的值以选择一个合适的徽章,该徽章将显示在表格的单元格中。 问题是表格有 7 组状态数据,每组有 12 个单元格。 我怎样才能优化这个循环?有没有比 if-else_if-else 语句更好的方法?

    .row.row-cols-12
      each portmap in portMap2
        .col 
          if (portmap.st1 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st1 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st1 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st2 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st2 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st2 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st3 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st3 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st3 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected
        .col 
          if (portmap.st4 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st4 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st4 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st5 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st5 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st5 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st6 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st6 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st6 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st7 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st7 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st7 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st8 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st8 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st8 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st9 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st9 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st9 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st10 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st10 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st10 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected
        .col 
          if (portmap.st11 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st11 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st11 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected 
        .col 
          if (portmap.st12 == 0)
            span.badge.badge-pill.badge-success Good
          else if (portmap.st12 == 1)
            span.badge.badge-pill.badge-danger Bad
          else if (portmap.st12 == 2)
            span.badge.badge-pill.badge-secondary Excluded
          else
            span.badge.badge-pill.badge-light Disconnected

【问题讨论】:

    标签: node.js sqlite express conditional-statements pug


    【解决方案1】:

    使用for 循环和括号语法:

    .row.row-cols-12
      each portmap in portMap2
        - for (let i = 0; i < 12; i++)
          - let st = portmap['st' + (i + 1)]
          .col 
            if (st === 0)
              span.badge.badge-pill.badge-success Good
            else if (st === 1)
              span.badge.badge-pill.badge-danger Bad
            else if (st === 2)
              span.badge.badge-pill.badge-secondary Excluded
            else
              span.badge.badge-pill.badge-light Disconnected 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2016-10-09
      • 2011-09-15
      • 1970-01-01
      • 2018-10-29
      相关资源
      最近更新 更多