3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用增量和想要的部分來計(jì)算間隔。
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貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
這個(gè)問題會(huì)有更多的解決方案,這里是我會(huì)怎么做:
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貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
i計(jì)算輸出數(shù)組中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));
不漂亮,但仍然比當(dāng)前接受的答案中的循環(huán)更好。
添加回答
舉報(bào)