为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过特定索引获取未来项目和过去项目,就像在轮播中一样

如何通过特定索引获取未来项目和过去项目,就像在轮播中一样

天涯尽头无女友 2023-07-29 16:34:25
我正在尝试创建一个自定义轮播。我被算法困住了。我需要通过特定索引获取未来和过去的项目。旋转木马可以无限移动。示例: var exampleArray = [1,2,3,4,5,6,7,8,9];切片(示例数组,0);-->> currentItem = [1], futureItems = [2,3,4,5], PastItems = [6,7,8,9]slice(exampleArray, 4); -->> currentItem = [5], futureItems = [6,7,8,9], PastItems = [1,2,3,4]slice(exampleArray, 7); -->> 当前项目 = [8],未来项目 = [9,1,2,3],过去项目 = [4,5,6,7]
查看完整描述

1 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

旋转数组以将所需的数据放入currentItem中间;那么你可以将中间之前的切片作为pastItems,将中间元素作为currentItem,将中间之后的切片作为futureItems

const slicer = (arr, idx) => {

  let len = arr.length;

  let mid = Math.floor(len/2);

  let rotated = arr.slice(0);

  rotated = rotated.concat(rotated.splice(0, (mid + idx + 1) % len));

  return [rotated.slice(0, mid), [rotated[mid]], rotated.slice(mid+1)]

}


const exampleArray = [1,2,3,4,5,6,7,8,9];


[pastItems, currentItem, futureItems] = slicer(exampleArray, 0);

console.log(pastItems);

console.log(currentItem);

console.log(futureItems);


[pastItems, currentItem, futureItems] = slicer(exampleArray, 4);

console.log(pastItems);

console.log(currentItem);

console.log(futureItems);


[pastItems, currentItem, futureItems] = slicer(exampleArray, 7);

console.log(pastItems);

console.log(currentItem);

console.log(futureItems);



查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信