有没有办法在 JavaScript 中创建整数范围? [复制]

Posted

技术标签:

【中文标题】有没有办法在 JavaScript 中创建整数范围? [复制]【英文标题】:Is there a way to create an Integer range in JavaScript? [duplicate] 【发布时间】:2018-10-17 08:28:06 【问题描述】:

有没有办法创建一个整数范围?

在其他语言中,我可以使用Range(1, 9) 轻松创建[1, 2, ... 8]

有没有一种在 javascript 中创建列表的简单方法?

【问题讨论】:

如果我可以问,你想用范围完成什么? 查看这个有很多不同方法的问题:***.com/questions/3746725/… npmjs.com/package/multi-integer-range 【参考方案1】:

有没有在 JavaScript 中创建列表的简单方法?

不可以,但您可以使用ES 功能(如mapspread syntax)创建自己的解决方案。

var range = (start, end) => start < end ? [...Array(end - start)].map((_, i) => start + i) : [];
console.log(range(1,9));

另外,returns 一个 empty 数组用于start 大于end 的情况。

【讨论】:

如果输入(1,9),OP需要1-8 @AnkitAgarwal,已更新。 这会给Range(9,1) 报错。这个案子也不处理 @AnkitAgarwal,对于start &gt; end,我只返回一个空数组。 是的,现在看起来不错【参考方案2】:
 const range = (start, end) => Array.from(length: end - start, (_, i) => start + i);

 console.log(range(1,5));

这将创建一个带有索引的数组。如果您在循环中需要它,迭代器可能会更好:

 function* range(start, end = Infinity) 
   for(let i = start; i < end; i++)
     yield i;
 

可以用作:

 for(const v of range(1, 10))
    console.log(v);

您还可以轻松地将迭代器转换为数组:

 console.log([...range(0, 10)]);

【讨论】:

这会给 Range(9,1) 带来错误。这个案子也不处理【参考方案3】:

您可以创建一个名为Range 的可重用函数并循环遍历开始值和结束值。您可以进一步添加if 条件,确保起始值始终小于结束值。

function Range(start, end)
  var rangeArray = [];
  if(start < end)
    for(var i=start; i<end; i++)
      rangeArray.push(i);
    
  
  return rangeArray;
;

console.log(Range(1,9));
console.log(Range(2,9));
console.log(Range(5,12));
console.log(Range(16,12));
console.log(Range(30,12));

【讨论】:

以上是关于有没有办法在 JavaScript 中创建整数范围? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 VBA 中创建范围

如何在 Python 中创建模块范围的变量? [复制]

在javascript对象中创建“静态”成员[重复]

在 JavaScript 中创建范围 - 奇怪的语法

在 JavaScript 中创建范围 - 奇怪的语法

在 C# Web 浏览器中创建 javascript 变量全局范围