You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS二维数组分页计算page与页内索引公式求解

问题修正与正确计算方案

你当前使用的var page = Math.ceil(chapter / 30);存在边界索引错误:由于chapter是从0开始计数的,当chapter取值为1~29(第一页的第2到第30个条目)时,计算得到的page值为1,会直接错位到第二页,无法正确匹配二维数组的索引。


变量计算公式(完全适配0起始数组规则)

所有公式都经过边界值验证,chapter_on_page取值严格锁定在0~29区间,不会出现数组越界。

  • page(页码,对应二维数组的一级索引,0起始)
    推荐用整数向下取整实现,无浮点数运算误差,性能最优:
    var page = Math.floor(chapter / 30);
    
    边界值验证:
    • chapter = 0~29时,page = 0(匹配第一页子数组)
    • chapter = 30~59时,page = 1(匹配第二页子数组)
    • 后续页码以此类推,完全对齐子数组顺序
  • chapter_on_page(页内索引,对应子数组的二级索引,0起始)
    直接用取模运算即可,天然适配单页30条的循环索引规则:
    var chapter_on_page = chapter % 30;
    
    边界值验证:
    • chapter = 0时索引0,chapter=29时索引29
    • chapter=30时索引回到0,chapter=59时索引29
    • 全程取值范围固定0~29,不会越界

可直接复用的代码示例

// 遍历0~999章节获取对应条目
for (var chapter = 0; chapter <= 999; chapter++) {
  var page = Math.floor(chapter / 30);
  // 增加边界判断,避免超出数组总长度时报错
  if (page >= list.length) break;
  var chapter_on_page = chapter % 30;
  var targetItem = list[page][chapter_on_page];
  // 后续业务逻辑处理targetItem即可
}

如果你需要页码从1开始计数(仅用于前端展示,不用于数组索引),只需要在计算展示值时给page加1即可,数组取值必须用0起始的计算结果。


内容的提问来源于stack exchange,提问作者Hòa Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:42:14