Javascript会生成2个数字之间的所有数字

时间:2015-08-13 23:36:51

标签: javascript

我搜索了很多关于这一点的内容,但是找不到任何关于它是如何工作的正确文档的东西如果有人愿意用一个例子解释如何做到这一点会很棒

1 个答案:

答案 0 :(得分:4)

迭代x和y之间的所有数字,将每个数字保存到数组,然后返回该数组。假设x小于y:

function getAllNumbersBetween(x, y) {
  var numbers = [];
  // Set a temporary variable i to start at value x.
  // As long as the value of i is less than the value y, increment it.
  // The loop will end when i is equal to y.
  for (var i = x; i < y; i++) {
    numbers.push(i);
  }
  return numbers;
}

例如:

getAllNumbersBetween(10, 15);  // [10, 11, 12, 13, 14]

如果你想要一个包含范围(10-15),你可以将循环条件改为i <= y。如果你想要一个独占范围(11-14),你可以将循环迭代器更改为i = x + 1

我更多地考虑了这一点,并提出了一个不依赖于参数x和y的解决方案,其中x严格小于y。还强制执行适当类型的参数。还处理2个以上的参数。

function getAllNumbersBetween() {
  var numbers = [];
  // Handle too few arguments.
  if (arguments.length < 2) {
    return numbers;
  }
  // Make sure x < y.
  Array.prototype.sort.call(arguments);
  // Assign each argument to a local variable.
  var x = arguments[0];
  var y = arguments[arguments.length - 1];
  // Make sure x and y are numbers.
  if (typeof x != 'number' || typeof y != 'number') {
    return numbers;
  }
  for (var i = x; i < y; i++) {
    numbers.push(i);
  }
  return numbers;
}

例如:

getAllNumbersBetween(15, 10);  // [10, 11, 12, 13, 14]
getAllNumbersBetween(15, 10, 11);  // [10, 11, 12, 13, 14]
getAllNumbersBetween(11, 15, 10);  // [10, 11, 12, 13, 14]
getAllNumbersBetween(15);  // []
getAllNumbersBetween(15, '10');  // []
getAllNumbersBetween();  // []