在PHP中,您可以。。。

range(1, 3); // Array(1, 2, 3)
range("A", "C"); // Array("A", "B", "C")

也就是说,有一个函数可以通过传递上下限来获得一系列数字或字符。

JavaScript本机是否有内置的功能?如果没有,我将如何实施?


当前回答

(from, to) => [...Array(to - from)].map((_,i)=> i + from)

其他回答

这里有一个npm模块bereich(“bereich”是德语中“范围”的意思)。它利用了现代JavaScript的迭代器,因此您可以以各种方式使用它,例如:

console.log(...bereich(1, 10));
// => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

const numbers = Array.from(bereich(1, 10));
// => [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

for (const number of bereich(1, 10)) {
  // ...
}

它还支持递减范围(通过简单地交换最小值和最大值),并且还支持除1以外的步骤。

免责声明:我是本模块的作者,所以请对我的答案持保留态度。

您还可以执行以下操作:

const range = Array.from(Array(size)).map((el, idx) => idx+1).slice(begin, end);
var range = (l,r) => new Array(r - l).fill().map((_,k) => k + l);

这是我用于数字范围的方法:

const rangeFrom0 = end => [...Array(end)].map((_, index) => index);

or

const rangeExcEnd = (start, step, end) => [...Array(end - start + 1)]
   .map((_, index) => index + start)
   .filter(x => x % step === start % step);

这是我的2美分:

function range(start, end) {
  return Array.apply(0, Array(end - 1))
    .map((element, index) => index + start);
}