Lai*_*iso 5 javascript algorithm ecmascript-6
我有一个间隔[0; max],我想将它分成特定数量的子间隔.为此,我编写了一个函数,名为getIntervalls(max, nbIntervals)where max我是第一个区间中的最大元素,nbIntervals是预期的子区间数.
例如:
getIntervalls(3, 2)应该回来[[0,1], [2,3]],getIntervalls(6, 2)应该回来[[0,3], [4,6]],getIntervalls(8, 3)应该回来[[0,2], [3,5], [6,8]],getIntervalls(9, 3)应该回来[[0,3], [4,7], [8,9]],这是我的功能:
function getIntervalls(max, nbIntervalls) {
var size = Math.ceil(max / nbIntervalls);
var result = [];
if (size > 1) {
for (let i = 0; i < nbIntervalls; i++) {
var inf = i + i * size;
var sup = inf + size < max ? inf + size: max;
result .push([inf, sup]);
}
} else {
result.push([0, max]);
}
return result;
}
console.log(JSON.stringify(getIntervalls(7, 2)));
Run Code Online (Sandbox Code Playgroud)
它工作正常,并显示此输出:
[[0,4],[5,7]]
Run Code Online (Sandbox Code Playgroud)
当我将参数更改为7和3时,它显示:
[[0,3],[4,7],[8,7]]
Run Code Online (Sandbox Code Playgroud)
代替
[[0,2],[3,5],[6,7]]
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?先感谢您.ES6语法将不胜感激!:)
您可以检查i第一个元素是否为零,以及下一个增量是否大于第二个元素的最大值。您还可以检查第一个元素是否小于最大值。
function getIntervalls(max, nInt) {
const c = Math.floor(max / nInt);
const r = [];
for (var i = 0; i <= max; i += c) {
const a = i == 0 ? i : i += 1;
const b = i + c > max ? max : i + c;
if (a < max) r.push([a, b])
}
return r;
}
console.log(JSON.stringify(getIntervalls(3, 2)));
console.log(JSON.stringify(getIntervalls(6, 2)));
console.log(JSON.stringify(getIntervalls(8, 3)));
console.log(JSON.stringify(getIntervalls(9, 3)));
console.log(JSON.stringify(getIntervalls(7, 2)));
console.log(JSON.stringify(getIntervalls(7, 3)));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |