在PHP中,您可以。。。

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

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

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


当前回答

这里有一个基于@benmcdonald和其他人的简单方法,尽管不止一行。。。

设K=[];对于(i=“A”.charCodeAt(0);i<=“Z”.charCodeAt(0);i++){K.push(字符串来自CharCode(i))};console.log(K);

其他回答

这里有一个很好的简单方法,可以在ES6中只使用数字(不知道它的速度比较):

Array.prototype.map.call(' '.repeat(1 + upper - lower), (v, i) => i + lower)

对于单个字符的范围,可以稍微修改一下:

Array.prototype.map.call(' '.repeat(1 + upper.codePointAt() - lower.codePointAt()), (v, i) => String.fromCodePoint(i + lower.codePointAt()));

Op要求范围,例如范围(3,10),因此可以

[...[...Array(10-3).keys()].map(i => i+3)]

回报

[3, 4, 5, 6, 7, 8, 9]

如果我们输入类似[4,2]的内容,我们将得到[2,3,4]作为输出,我们可以使用它。

function createRange(array) {
  var range = [];
  var highest = array.reduce(function(a, b) {
    return Math.max(a, b);
  });
  var lowest = array.reduce(function(a, b) {
    return Math.min(a, b);
  });
  for (var i = lowest; i <= highest; i++) {
    range.push(i);
  }
  return range;
}

我最喜欢的新形式(ES2015)

Array(10).fill(1).map((x, y) => x + y)

如果您需要一个带有步骤参数的函数:

const range = (start, stop, step = 1) =>
  Array(Math.ceil((stop - start) / step)).fill(start).map((x, y) => x + y * step)

MDN文件建议的另一种可能的实施方式:

// Sequence generator function 
// (commonly referred to as "range", e.g. Clojure, PHP etc)
const range = (start, stop, step) => 
  Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step))

这里有一个基于@benmcdonald和其他人的简单方法,尽管不止一行。。。

设K=[];对于(i=“A”.charCodeAt(0);i<=“Z”.charCodeAt(0);i++){K.push(字符串来自CharCode(i))};console.log(K);