如何使用Javascript在旋转木马中找到项目的最短路径?

如何使用Javascript在旋转木马中找到项目的最短路径?,javascript,Javascript,假设我有一个带5张幻灯片的循环传送带。如何使用javascript确定从当前幻灯片到新幻灯片的哪种方式(向前或向后)需要较少的步骤 ie当前在幻灯片3上,希望转到幻灯片0。在这种情况下,向前走的步骤比向后走的步骤要少 (0)、1、2、[3]、4、(0)、1、2等 我想到了这个,但似乎有点不对劲。我错过了一个概念吗 const targetSlide = 0; const currentSlide = 3; const itemCount = 5; let forwardRange; let ba

假设我有一个带5张幻灯片的循环传送带。如何使用javascript确定从当前幻灯片到新幻灯片的哪种方式(向前或向后)需要较少的步骤

ie当前在幻灯片3上,希望转到幻灯片0。在这种情况下,向前走的步骤比向后走的步骤要少

(0)、1、2、[3]、4、(0)、1、2等

我想到了这个,但似乎有点不对劲。我错过了一个概念吗

const targetSlide = 0;
const currentSlide = 3;
const itemCount = 5;
let forwardRange;
let backwardsRange;
if(currentSlide != targetSlide){
  for(let i = 0; i < itemCount; i++){
    let j = currentSlide + i;
    if(j >= itemCount){ 
      j = j - itemCount;
    }
    if(j == targetSlide){
      forwardRange = i;
      backwardsRange = itemCount - i;
    }
  }
  if(forwardRange - backwardsRange <= 0){
    console.log('go forward')
  }else{
    console.log('go backward')
  }
}
const targetSlide=0;
恒流滑动=3;
const itemCount=5;
让我们继续前进;
让后退改变方向;
如果(当前幻灯片!=目标幻灯片){
for(设i=0;i=itemCount){
j=j-项目计数;
}
如果(j==targetSlide){
前向范围=i;
BackardsRange=itemCount-i;
}
}

如果(forwardRange-BackardsRange,您可以计算向前或向后移动的成本,并使用该成本确定方向

const targetSlide = 0;
const currentSlide = 3;
const itemCount = 5;

const forwardsCost = currentSlide < targetSlide
  ? targetSlide - currentSlide
  : itemCount - currentSlide + targetSlide;

const backwardsCost = currentSlide > targetSlide
  ? currentSlide - targetSlide
  : currentSlide + itemCount - targetSlide;
const targetSlide=0;
恒流滑动=3;
const itemCount=5;
常量forwardsCost=currentSlidetargetSlide
?当前幻灯片-目标幻灯片
:currentSlide+itemCount-targetSlide;

您可以计算向前或向后的成本,并用它来确定方向

const targetSlide = 0;
const currentSlide = 3;
const itemCount = 5;

const forwardsCost = currentSlide < targetSlide
  ? targetSlide - currentSlide
  : itemCount - currentSlide + targetSlide;

const backwardsCost = currentSlide > targetSlide
  ? currentSlide - targetSlide
  : currentSlide + itemCount - targetSlide;
const targetSlide=0;
恒流滑动=3;
const itemCount=5;
常量forwardsCost=currentSlidetargetSlide
?当前幻灯片-目标幻灯片
:currentSlide+itemCount-targetSlide;
只需比较
Math.abs(当前幻灯片-目标幻灯片)itemCount/2
只需比较
Math.abs(当前幻灯片-目标幻灯片)itemCount/2