大家好我只想知道JS是否有一个范围函数,它将返回一个偏移量中定义的数字。我没有使用jQuery,所以纯JS对我来说是最好的解决方案。
我希望得到一组5个数组,即
我想知道这是否可行?我也在查看下划线库,看看是否有任何方便的方法,但我找不到与此相关的任何内容。
答案 0 :(得分:5)
您可以使用underscore.js
函数_.range()
:
_.range(10);
//=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
_.range(1, 11);
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
_.range(0, 30, 5);
//=> [0, 5, 10, 15, 20, 25]
_.range(0, -10, -1);
//=> [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
_.range(0);
// => []
查看更多here。
<强>更新强>
如果您使用的是ES6,这是填充数组的本机方法:
Array(range).fill().map((x,i)=>i);
对于旧版本的JavaScript,您只需创建一个for循环并手动添加值。
答案 1 :(得分:5)
如果您正在使用ES6 / 2015,那么您也可以在纯JS中执行此操作(尽管有点凌乱:P)
Array(5).fill().map((x,i)=>i);
答案 2 :(得分:3)
如果这是你需要的唯一功能,没有理由拉入整个underscore.js库。
我假设您正在使用数组数据结构。 JavaScript中没有range
函数,但是可以使用本机数组函数来获得相同的结果。
我建议使用slice
方法。例如,给出以下内容:
var list = [1, 34, 5, 8, 13]
如果我们想要前三个数字(范围0-2),我们可以这样做:
list.slice(0,3)
slice的第一个参数表示要包含的第一个数字的索引,第二个参数是您希望范围包含(但不包括)的结束索引。这有点令人困惑,需要您计算并存储正确的索引值,因此我们应该构建自己的程序抽象。
我们可以编写自己的range
函数,因为在这种情况下,它确实是正确的抽象。让我们说第一个参数是你想要开始的索引,第二个参数是集合的大小。
var range = function (list, beginIndex, size) {
return list.slice(beginIndex, beginIndex + size);
}
使用此功能,我们可以从任何列表中获取一组数字。使用上面的示例使用列表的概念,集合的起始索引和集合的大小。
要获得一组7开始形式的索引为12:
range(list, 12, 7);