复杂表格合并

function groupData(data) {
  let currentFinalPerformanceScore = ''
  let currentOverallWorkHourRatio = ''
  let currentPerformanceScore = ''
  let currentProjectName = ''
  let currentProjectScore = ''
  let currentGoalsHour = ''
  let currentProjectFractionRatio = ''

  return data.map((item, index) => {
    if (currentFinalPerformanceScore !== item.finalPerformanceScore) {
      currentFinalPerformanceScore = item.finalPerformanceScore
      item.finalPerformanceScoreSpan = calculateSpan(
        data,
        index,
        'finalPerformanceScore',
        currentFinalPerformanceScore
      )
    } else {
      item.finalPerformanceScoreSpan = 0
    }

    if (currentOverallWorkHourRatio !== item.overallWorkHourRatio) {
      currentOverallWorkHourRatio = item.overallWorkHourRatio
      item.overallWorkHourRatioSpan = calculateSpan(
        data,
        index,
        'overallWorkHourRatio',
        currentOverallWorkHourRatio
      )
    } else {
      item.overallWorkHourRatioSpan = 0
    }

    if (currentPerformanceScore !== item.performanceScore) {
      currentPerformanceScore = item.performanceScore
      item.performanceScoreSpan = calculateSpan(data, index, 'performanceScore', currentPerformanceScore)
    } else {
      item.performanceScoreSpan = 0
    }

    if (currentProjectName !== item.projectName) {
      currentProjectName = item.projectName
      item.projectNameSpan = calculateSpan(data, index, 'projectName', currentProjectName)
    } else {
      item.projectNameSpan = 0
    }

    if (currentProjectScore !== item.projectScore) {
      currentProjectScore = item.projectScore
      item.projectScoreSpan = calculateSpan(data, index, 'projectScore', currentProjectScore)
    } else {
      item.projectScoreSpan = 0
    }

    if (currentGoalsHour !== item.goalsHour) {
      currentGoalsHour = item.goalsHour
      item.goalsHourSpan = calculateSpan(data, index, 'goalsHour', currentGoalsHour)
    } else {
      item.goalsHourSpan = 0
    }

    if (currentProjectFractionRatio !== item.projectFractionRatio) {
      currentProjectFractionRatio = item.projectFractionRatio
      item.projectFractionRatioSpan = calculateSpan(
        data,
        index,
        'projectFractionRatio',
        currentProjectFractionRatio
      )
    } else {
      item.projectFractionRatioSpan = 0
    }

    return item
  })
}

function calculateSpan(data, index, property, value) {
  let span = 0
  for (let i = index; i < data.length; i++) {
    if (data[i][property] === value) {
      span += 1
    } else {
      break
    }
  }
  return span
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屎山制造者2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值