创建一个包含从 min 到 max 的所有数字的数组,无需循环

2024-01-02

我有两个号码,min and max,我想创建一个包含它们之间所有数字的数组(包括min and max).

最明显的方法是使用for为此循环,并且push将单个值放入数组中。然而,这似乎是一种非常幼稚的方法,即它是命令式编程。

现在我正在考虑如何以更实用的方式创建这样的数组。基本上,诸如 a 的反面之类的东西reduce函数:不是将数组简化为数字,而是从两个数字构建一个数组。

我怎么能这样做呢?解决这个问题的函数式方法是什么?

基本上,我在想诸如此类的事情10..20在其他一些语言中。 JavaScript 中最优雅的等价物是什么?


灵感来自this https://stackoverflow.com/q/18947892/1903116

var min = 3, max = 10;
var x = Array.apply(null, {length: max + 1}).map(Number.call, Number).slice(min);
console.log(x);
// [ 3, 4, 5, 6, 7, 8, 9, 10 ]

最佳版本

var min = 3, max = 10;
var x = Array.apply(null, {length: max + 1 - min}).map(function(_, idx) {
    return idx + min;
});
console.log(x);
// [ 3, 4, 5, 6, 7, 8, 9, 10 ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建一个包含从 min 到 max 的所有数字的数组,无需循环 的相关文章

随机推荐