javascript 有范围函数吗?

Does javascript have a range function?

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

我想要一组 5 个数字,即

  1. 第一组数字 - 0 - 4
  2. 第二组号码 - 5 - 10
  3. 第三组号码 - 11 - 16
  4. 等等等等

我想知道这是否可能?我也在查看下划线库,看看是否有任何方便的方法,但我根本找不到与此相关的任何内容。

您可以使用 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 循环并手动添加值。

如果这是您唯一需要的功能,则没有理由引入整个 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);
}

使用这个函数,我们可以从任何列表中得到一组数字。使用上面的示例,使用列表的概念、集合的起始索引和集合的大小。

要从索引 12 开始得到一组 7:

range(list, 12, 7);

如果您使用的是 ES6/2015,那么您也可以在纯 JS 中执行此操作(尽管有点乱 :P)

Array(5).fill().map((x,i)=>i);