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

如何在JavaScript中实现无负数的7位分页序列生成?

实现简洁的分页数字序列生成

基于你现有的range函数,完全可以不用大量if/else来实现需求,这里提供两种简洁的方案:

方案一:使用三元表达式(最易读)

三元表达式属于简洁的条件判断,不算“大量if/else”的范畴,代码可读性很高:

const range = (start, stop) => Array.from({ length: (stop - start)}, (_, i) => start + i);

const getPaginationNumbers = (currentPage) => {
  // 核心逻辑:当前页大于3时取前后3个的起始值,否则固定从3开始
  const start = currentPage > 3 ? currentPage - 3 : 3;
  // 结束值=起始值+7,保证生成7个连续数字
  const stop = start + 7;
  return range(start, stop);
};

测试示例:

  • 输入17 → 返回 [14,15,16,17,18,19,20]
  • 输入2 → 返回 [3,4,5,6,7,8,9]
  • 输入4 → 返回 [1,2,3,4,5,6,7]

方案二:纯算术运算(无任何条件关键字)

如果想彻底避开条件判断关键字,可以利用JavaScript布尔值转数字的特性(true为1,false为0)来计算起始值:

const range = (start, stop) => Array.from({ length: (stop - start)}, (_, i) => start + i);

const getPaginationNumbers = (currentPage) => {
  // 通过布尔值的算术运算实现分支逻辑
  const start = (currentPage > 3) * (currentPage - 3) + (!(currentPage > 3)) * 3;
  const stop = start + 7;
  return range(start, stop);
};

原理很简单:当currentPage>3时,第一个乘积项生效,第二个项为0;反之则第二个项生效,第一个项为0,最终得到符合要求的起始值。

内容的提问来源于stack exchange,提问作者Udders

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:41:32