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

JavaScript如何优雅实现[1,8]到1-8连续整数数组转换

JavaScript 从首尾边界数组生成连续整数数组的简洁实现

针对给定首尾边界数组(如[1,8])生成对应连续整数数组的需求,下面是几种社区常用的优雅写法,均支持自定义整数起止范围:

  • Array.from 映射法(首推)
    没有多余的中间操作,语义直白,适配所有ES6及以上运行环境,是日常开发里最常用的方案:

    const getContinuousArr = ([start, end]) => 
      Array.from({ length: end - start + 1 }, (_, idx) => start + idx)
    
    // 调用测试
    getContinuousArr([1,8]) // 输出 [1,2,3,4,5,6,7,8]
    

    逻辑很简单:先根据首尾差值算出目标数组的总长度,再通过索引偏移直接算出每个位置对应的整数,不需要额外写for循环声明临时变量。

  • 扩展运算符+索引迭代法
    写法更精简,利用数组原生的keys迭代器先生成0起始的索引序列,再做数值偏移:

    const getContinuousArr = ([start, end]) =>
      [...Array(end - start + 1).keys()].map(idx => start + idx)
    

    性能和第一种方案几乎没有差异,只是中间多了一步数组展开的操作,适合追求代码简短的场景。

  • 兼容递减场景的通用写法
    如果后续需要支持类似[8,1]生成倒序连续数组的需求,只需要加一步步长判断即可:

    const getContinuousArr = ([start, end]) => {
      const step = start > end ? -1 : 1
      return Array.from({ length: Math.abs(end - start) + 1 }, (_, idx) => start + idx * step)
    }
    

避坑提示:不推荐用new Array(n).fill(0).map()的写法,虽然填充基础类型值不会出引用问题,但语义上不如上面的写法直接,还多了一步无意义的fill操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:06:12