You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历模板字面量员工数组,输出营收最高及最低的3名员工

实现方案

第一步:修改HTML结构

替换页面中原有卡片代码,新增两个对应功能的展示容器:

<!-- 营收最高3名员工卡片 start -->
<div id="top-3" class="card mt-5">
  <div class="card-content">
    <h5 class="title is-5">营收最高3名员工</h5>
    <div id="top-3-content" class="content columns is-multiline">
      <!-- JS渲染内容将插入此处 -->
    </div>
  </div>
</div>
<!-- 营收最高3名员工卡片 end -->

<!-- 营收最低3名员工卡片 start -->
<div id="bottom-3" class="card mt-5">
  <div class="card-content">
    <h5 class="title is-5">绩效最差3名员工</h5>
    <div id="bottom-3-content" class="content columns is-multiline">
      <!-- JS渲染内容将插入此处 -->
    </div>
  </div>
</div>
<!-- 营收最低3名员工卡片 end -->

第二步:修复并更新JS逻辑

首先注意你现有employeeModule.js代码中的立即执行函数缺了执行括号,需要修正为const EmployeeModule = (function(){...})(),否则调用方法会报错。
之后替换原有单员工渲染逻辑,新增排序批量渲染代码:

// 公共方法:生成单个员工的展示HTML片段
const generateEmployeeHtml = (employee) => {
  return `
    <div class="column is-one-third">
      <img src="images/employee-images/${employee.img}" width="80%" class="is-horizontal-center" alt="员工${employee.name}头像">
      <h6 class="title is-6 has-text-centered mt-3">${employee.name}</h6>
      <div class="columns ml-2 mr-2">
        <div class="column has-text-centered">
          <p class="is-size-7">职位</p> 
          <p>${employee.position}</p>
        </div>
        <div class="column has-text-centered">
          <p class="is-size-7">当月营收</p> 
          <p>${employee.revenue}</p>
        </div>
      </div>
    </div>
  `
}

// 渲染营收排名列表
const renderRevenueRank = () => {
  // 浅拷贝原始数组避免污染数据源
  const allEmployees = [...EmployeeModule.getAll()]
  // 营收降序排序取前3
  const top3 = allEmployees.sort((a,b) => b.revenue - a.revenue).slice(0,3)
  // 营收升序排序取前3
  const bottom3 = allEmployees.sort((a,b) => a.revenue - b.revenue).slice(0,3)

  // 分别渲染到对应容器
  document.getElementById('top-3-content').innerHTML = top3.map(emp => generateEmployeeHtml(emp)).join('')
  document.getElementById('bottom-3-content').innerHTML = bottom3.map(emp => generateEmployeeHtml(emp)).join('')
}

// 页面加载完成后执行渲染
document.addEventListener('DOMContentLoaded', renderRevenueRank)

补充说明

  • 代码复用了Bulma的is-one-third栅格类实现一行展示3个员工卡片,可根据设计需求调整列宽类
  • 排序前做了数组浅拷贝处理,不会修改EmployeeModule中的原始员工数据
  • 抽离了公共的HTML生成方法,后续调整员工卡片样式仅需修改generateEmployeeHtml函数即可

内容的提问来源于stack exchange,提问作者hackandslash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 06:54:05