有没有办法在 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
功能(如map
和spread 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 > 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 中创建整数范围? [复制]的主要内容,如果未能解决你的问题,请参考以下文章