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

我正在尝试创建一个自定义轮播。
我被算法困住了。
我需要通过特定索引获取未来和过去的项目。

旋转木马可以无限移动。

示例: 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]


天涯尽头无女友
浏览 95回答 1
1回答

ibeautiful

旋转数组以将所需的数据放入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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript