NodeJS 如何从数组中获取下一个和上一个五个元素?

ih99xse1  于 2023-05-06  发布在  Node.js
关注(0)|答案(3)|浏览(152)

我有一个由n个元素组成的数组。

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

也有两个按钮*下一个和上一个***,最初我显示的第一个5元素(页面加载)的数组初始数组[1,2,3,4,5]**
如何在下一个按钮上显示下五个元素单击[6,7,8,9,10]并在上一个按钮上单击要显示[1,2,3,4,5]
还需要检查是否没有任何下一个元素,是否包含lastIndex,以及是否数组包含第一个元素。
我已经尝试使用slice来arr.slice(开始[,end])

ygya80vv

ygya80vv1#

let 
  arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20],
  size = 5,
  current = 1;

function handleClick(go){
  if(go === "prev" && current > 1){
    current--
  }
  else if(go === "next" && current >= 1 && current < arr.length/size){
    current++
  }
  console.log(getNewArr())
}

function getNewArr(){
  return arr.slice(size*current - size, size*current)
}
<button onclick=handleClick("prev")>prev</button>
<button onclick=handleClick("next")>next</button>
igetnqfo

igetnqfo2#

你可以为想要的元素取一个索引和一个大小,然后对数组进行dlice。

const
    data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
    show = array => document.getElementById('items').innerHTML = array.join(' '),
    next = () => {
        index += size;
        while (index >= data.length) index -= size;
        show(data.slice(index, index + size));
    },
    prev = () => {
        index -= size;
        while (index < 0) index += size;
        show(data.slice(index, index + size));
    },
    size = 5;

let index = 0;

document.getElementById('bprev').addEventListener('click', prev);
document.getElementById('bnext').addEventListener('click', next);

show(data.slice(index, index + size));
<button id="bprev">prev</button> <span id="items"></span> <button id="bnext">next</button>
5f0d552i

5f0d552i3#

现在,我只是在nextprevious点击事件中使用硬编码的pageNumber创建一个演示,但您可以根据数组大小使其动态化。

工作演示:

// Input array
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// Method which returns the updated array elements based on the pageSize and pageNumber.
const paginate = (array, pageSize, pageNumber) => {
  return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
}

// On load initializing 5 elements.
document.getElementById('content').innerHTML =  paginate(arr, 5, 1);

// Next button click event
document.getElementById('next').onclick = function() {
    document.getElementById('content').innerHTML =  paginate(arr, 5, 2);
};

// previous button click event
document.getElementById('previous').onclick = function() {
    document.getElementById('content').innerHTML =  paginate(arr, 5, 1);
};
<button id="previous">Previous</button>
<span id="content"></span>
<button id="next">Next</button>

相关问题