[英]I have an 'n' number of array and how can I concat all array into a single array using jQuery
[英]I have min and max number how can I generate n number of array
我有min
數量10.5
和max
數量29.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]
我需要計算間隔來實現那是否有任何方法。 任何幫助將不勝感激謝謝
您可以計算增量和所需部分的間隔。
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));
這個問題會有更多的解決方案,這是我的方法:
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(', '));
計算輸出數組中位置i
處的值的公式為:
(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));
不漂亮,但仍然比當前接受的答案中的循環更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.