javascript是否有范围功能?

时间:2016-02-20 23:16:18

标签: javascript underscore.js

大家好我只想知道JS是否有一个范围函数,它将返回一个偏移量中定义的数字。我没有使用jQuery,所以纯JS对我来说是最好的解决方案。

我希望得到一组5个数组,即

  1. 第一组数字 - 0 - 4
  2. 第二组数字 - 5 - 10
  3. 第三组数字--11 - 16
  4. 依旧等等
  5. 我想知道这是否可行?我也在查看下划线库,看看是否有任何方便的方法,但我找不到与此相关的任何内容。

3 个答案:

答案 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);