3 回答

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

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

TA贡献1789条经验 获得超8个赞
i计算输出数组中position 值的公式为:
(max - min) / (interval - 1) * i + min
function generateArrayMinMax(min, max, interval) {
const formula = (_, i) => (max - min) / (interval - 1) * i + min;
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));
不漂亮,但仍然比当前接受的答案中的循环更好。
添加回答
举报