分页 Javascript 数组

新手上路,请多包涵

我正在尝试编写一个 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]

任何想法,将不胜感激。

原文由 SalmaFG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 678
2 个回答

您可以使用 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));

原文由 casraf 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是 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

它返回一个页面数组,这样您就可以获得某个页面,或者遍历所有页面。

原文由 dodov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题