我有最小和最大数量如何生成 n 个数组

我有minnumber10.5和maxnumber29.75我想n从这两个范围生成数组的数量。我正在生成已经在下面的数组,interval但我该如何计算interval:


generateArrayMinMax(min, max, interval) {

   if (interval === 0 || interval < 0) interval = 1;

   let list = [];

   for (var i = min; i <= max; i = i + interval) {

      list.push(i);

   }

   return list;

}


let min = 10.05;

let max = 29.75;

let arrayLen = 20;

let result = generateArrayMinMax(10.05, 29.75, 20);

预期结果:


[10.5, 11.513157894736842, 12.526315789473685, 13.539473684210526, 14.552631578947368, 15.56578947368421, 16.57894736842105, 17.592105263157894, 18.605263157894736, 19.61842105263158, 20.63157894736842, 21.64473684210526, 22.657894736842103, 23.671052631578945, 24.684210526315788, 25.69736842105263, 26.710526315789473, 27.723684210526315, 28.736842105263158, 29.75]

我需要计算间隔来实现,有什么方法可以做到这一点。任何帮助将不胜感激谢谢


有只小跳蛙
浏览 211回答 3
3回答

一只甜甜圈

您可以使用增量和想要的部分来计算间隔。function generateArrayMinMax(min, max, n) {&nbsp; &nbsp;let list = [min],&nbsp; &nbsp; &nbsp; &nbsp;interval = (max - min) / (n - 1);&nbsp; &nbsp;for (let i = 1; i < n - 1; i++) {&nbsp; &nbsp; &nbsp; list.push(min + interval * i);&nbsp; &nbsp;}&nbsp; &nbsp;list.push(max);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // prevent floating point arithmetic errors&nbsp; &nbsp;return list;}console.log(generateArrayMinMax(10.5, 29.75, 5));

白衣非少年

这个问题会有更多的解决方案,这里是我会怎么做:const min = 10.05;const max = 29.75;const arrayLen = 20;const generateArray = (min: number, max: number, n: number) => {&nbsp; &nbsp; // here you can play with some Math.round to make your interval integer or not&nbsp; &nbsp; const interval = (max - min) / (n - 1);&nbsp; &nbsp; const initial = new Array(n).fill(min);&nbsp; &nbsp; return initial.map((value, index) => index * interval + value);};const result = generateArray(min, max, arrayLen);console.info('OUTPUT', result.join(', '));

拉丁的传说

i计算输出数组中position 值的公式为:(max - min) / (interval - 1) * i + minfunction generateArrayMinMax(min, max, interval) {&nbsp; const formula = (_, i) => (max - min) / (interval - 1) * i + min;&nbsp; return Array.from({ length: interval }, formula);}console.log(generateArrayMinMax(10.5, 29.75, 5));如果你喜欢打代码高尔夫:f = (a, b, l) => Array.from({ length: l }, (_, i) => (b - a) / (l - 1) * i + a);console.log(f(10.5, 29.75, 5));不漂亮,但仍然比当前接受的答案中的循环更好。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript