javascript 有范围函数吗?
Does javascript have a range function?
大家好我只是想知道 JS 是否有一个范围函数,它将 return 数字定义在一个偏移量中。我没有使用 jQuery,所以纯 JS 对我来说是最好的解决方案。
我想要一组 5 个数字,即
- 第一组数字 - 0 - 4
- 第二组号码 - 5 - 10
- 第三组号码 - 11 - 16
- 等等等等
我想知道这是否可能?我也在查看下划线库,看看是否有任何方便的方法,但我根本找不到与此相关的任何内容。
您可以使用 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);
大家好我只是想知道 JS 是否有一个范围函数,它将 return 数字定义在一个偏移量中。我没有使用 jQuery,所以纯 JS 对我来说是最好的解决方案。
我想要一组 5 个数字,即
- 第一组数字 - 0 - 4
- 第二组号码 - 5 - 10
- 第三组号码 - 11 - 16
- 等等等等
我想知道这是否可能?我也在查看下划线库,看看是否有任何方便的方法,但我根本找不到与此相关的任何内容。
您可以使用 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);