生成介于 Min 和 Max 之间的值数组

Generate Array of Values between Min and Max

提问人:cupofjoe 提问时间:11/9/2023 最后编辑:Heretic Monkeycupofjoe 更新时间:11/9/2023 访问量:86

问:

希望在(vanilla)JavaScript 中创建一个函数,该函数生成一个数组,其 n 值介于最小值和最大值之间,其中 n 是指定的步数。第一个值应为最小值,最后一个值应为最大值。

function returnAllSteps(min,max,totalSteps) {
  var steps = new Array(totalSteps);
  for (i = 0; i < totalSteps; i++) {
    steps[i] = // HELP: return number value between min and max?
  }
  console.log(steps);
}
returnAllSteps(0,10,30); // min = 0, max = 10, totalSteps = 30 (give me an array with 30 steps between 0 and 10)

我还希望能够在该范围内返回单个步骤值。这是否必须在不同的功能中发生?

function returnStep(min,max,totalSteps,stepNumberToReturn) {
  // HELP: do I even need another function to do this?
}
returnStep(0,10,30,20); // min = 0, max = 10, totalSteps = 30, stepNumberToReturn = 20
// Return the value at array[20 - 1]

任何帮助将不胜感激!

JavaScript 数组循环

评论

0赞 Heretic Monkey 11/9/2023
这回答了你的问题吗?在 Javascript/jQuery 中创建两个数字之间的所有整数数组(包括两个数字
0赞 Tibrogargan 11/9/2023
@HereticMonkey没有。不同的要求。
0赞 Heretic Monkey 11/9/2023
@Tibrogargan 这不是我们在 Stack Overflow 上反击重复提案的方式。请参阅 stackoverflow.com/help/duplicates 的最后一段
0赞 Heretic Monkey 11/9/2023
参见 JavaScript 是否具有类似“range()”的方法来生成所提供边界内的范围?,尤其是此答案
0赞 Tibrogargan 11/9/2023
@HereticMonkey奇怪的是,这个答案恰恰说明了为什么这个问题不是重复的,因为 JavaScript 浮点数学行为会使它失败。

答:

1赞 KompjoeFriek 11/9/2023 #1

只需要一个函数来生成和返回一个包含所有步骤的数组:

function returnAllSteps(min, max, totalSteps) {
  let steps = new Array(totalSteps);
  let distance = max - min;
  for (i = 0; i < totalSteps; i++) {
    steps[i] = min + distance * (i / (totalSteps - 1));
  }
  return steps;
}

let mySteps = returnAllSteps(0, 10, 30); // min = 0, max = 10, totalSteps = 30 (give me an array with 30 steps between 0 and 10)
console.log(mySteps);

然后直接获取您需要的步骤。例如:myStepsmySteps[20]

评论

0赞 Tibrogargan 11/9/2023
也许和let step = (max - min) / (totalSteps - 1)steps[i] = min + step * i
0赞 Tibrogargan 11/9/2023
也可以解释为什么 for 循环不应该是for (i = min; i <= max; i += step)