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

环形轮播中数组索引相对偏移量计算函数的简化方案探讨

回答:简洁实现方案

根据需求的规则,我们可以先计算环形正向偏移量,再通过简单的条件判断得到结果,代码可大幅简化:

简洁实现代码

function getOffset(currentIndex: number, index: number, length: number) {
  // 计算环形下从currentIndex到index的正向步数(范围[0, length-1])
  const forwardDiff = ((index - currentIndex) % length + length) % length;
  
  if (forwardDiff <= 3) return forwardDiff;
  if (forwardDiff >= length - 3) return forwardDiff - length;
  return 3;
}

代码逻辑说明

  1. 环形正向偏移计算:((index - currentIndex) % length + length) % length 确保得到的forwardDiff始终在[0, length-1]范围内,避免负数偏移的计算歧义
  2. 正向近距判断:如果正向步数≤3,直接返回该步数(对应currentIndex右侧0-3位的偏移:0、+1、+2、+3)
  3. 反向近距判断:如果正向步数≥length-3(即反向步数≤3),返回forwardDiff - length(对应currentIndex左侧3位的偏移:-3、-2、-1)
  4. 远距边界处理:剩余情况(正向步数在4到length-4之间),统一返回边界值+3

测试验证

用原示例的测试用例验证,结果完全符合预期:

  • getOffset(0, 0, 10) → 0 ✔️
  • getOffset(0, 1, 10) → 1 ✔️
  • getOffset(0, 9, 10) → -1 ✔️
  • getOffset(0, 6, 10) → 3 ✔️

该实现逻辑清晰,代码简洁,完全覆盖需求中的所有场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:22:42