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

标签 javascript arrays node.js functional-programming

我有两个号码,minmax ,并且我想创建一个包含它们之间的所有数字的数组(包括 minmax )。

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

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

我怎么能这样做?解决此问题的功能方法是什么?

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

最佳答案

灵感来自 this

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 ]

关于javascript - 创建一个包含从 min 到 max 的所有数字的数组,无需循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476258/

相关文章:

javascript - 以下代码中需要关键字函数:

c - 如何在 C 中正确分配结构数组 HashMap 中的项

java - 二维数组和越界异常

c++ - 将对象传递给 Node.js C++ 插件

javascript - 无法使用 meteor 显示光标返回的值

javascript - 在contenteditable div中获取图片删除

ios - UITableView indexPath 和最大可重用单元格数

javascript - 解析 RFC 2822 格式的日期字符串(在 HTTP header 字段 `last-modified` 中找到)

node.js - 在 Typescript 中增加全局范围不起作用

javascript - 错误代码约定?