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

求助:使用JavaScript生成指定规则的分段数组

问题分析

给定起始值start、终止值end、步长参数size,需要生成两种不同规则的二维数组:

  • 规则1:start=1、end=100、size=10时,输出[[10,20],[20,30],...,[90,100]]
  • 规则2:相同参数下,输出[[5,10],[10,15],...,[95,100]]

你提供的代码从start开始步进size,生成[i, i+size-1]的子数组,得到的是[[1,10],[11,20],...],不符合任一规则,以下是两种规则的正确实现:


规则1实现代码
const start = 1;
const end = 100;
const size = 10;
const result = [];

let current = size; // 第一个子数组的起始为size的倍数
while (current <= end - size) {
    result.push([current, current + size]);
    current += size;
}
// 补充最后一个子数组
result.push([current, end]);

console.log(JSON.stringify(result));

逻辑说明

  • 初始值设为size(即10),保证第一个子数组起始是size的倍数
  • 每次步进size,生成[current, current+size]格式的子数组,直到current加size后会超过end
  • 最后补充以end为结束的子数组,确保序列完整覆盖到终止值

规则2实现代码
const start = 1;
const end = 100;
const size = 10;
const halfSize = size / 2; // 步进为size的一半
const result = [];

let current = halfSize; // 第一个子数组起始为size的一半
while (current + halfSize <= end) {
    result.push([current, current + halfSize]);
    current += halfSize;
}

console.log(JSON.stringify(result));

逻辑说明

  • 步进值取size/2(即5),初始值设为该步进值
  • 每次生成[current, current+halfSize]的子数组,直到子数组的结束值不超过end
  • 最终得到以size/2为间隔、前后子数组首尾衔接的序列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:50:20