分页 Javascript 数组

2022-08-30 05:36:18

我正在尝试编写一个Javascript函数,该函数将一个,作为参数,并返回一个模仿分页结果的数组:arraypage_sizepage_number

paginate: function (array, page_size, page_number) {
  return result;
}

例如,当:

array = [1, 2, 3, 4, 5],
page size = 2,
page_number = 2,

该函数应返回:。[3, 4]

任何想法将不胜感激。


答案 1

您可以使用 Array.prototype.slice,只需为 提供 参数即可。(start, end)

function paginate(array, page_size, page_number) {
  // human-readable page numbers usually start with 1, so we reduce 1 in the first argument
  return array.slice((page_number - 1) * page_size, page_number * page_size);
}

console.log(paginate([1, 2, 3, 4, 5, 6], 2, 2));
console.log(paginate([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 4, 1));

答案 2

下面是一个使用 reduce() 的解决方案

function paginate (arr, size) {
  return arr.reduce((acc, val, i) => {
    let idx = Math.floor(i / size)
    let page = acc[idx] || (acc[idx] = [])
    page.push(val)

    return acc
  }, [])
}

let array = [1, 2, 3, 4, 5]
let page_size = 2
let pages = paginate(array, page_size)

console.log(pages)    // all pages
console.log(pages[1]) // second page

它返回一个页面数组,以便您可以获取某个页面,或遍历所有页面。