0

我需要任何给定数字的开始、中间和结束值,它不必均匀分布,只需要一点逻辑即可。例子:

var parts = 3;

显然,我可以将其除以 3 并得到一个均匀设计的结果start: 1; middle: 1; end: 1

但是,如果用户要输入以下内容:

var parts = 8;

在我看来,答案是start: 2; middle: 4; end: 2

我需要根据“零件”变量的长度执行一项基本任务。

例子:

我需要计算开始值、中间值和结束值,这样我才能做这样的事情。

for (var t=0; t < start; t++){
    console.log('Start');
}
for (var t=0; t < middle; t++){
    console.log('Middle');
}
for (var t=0; t < end; t++){
    console.log('End');
}

我怎么能计算这个?

4

3 回答 3

2
var parts, segment, start, middle, end;

parts = 8; // Obviously this value would be defined elsewhere

segment = Math.floor(parts / 3);

start = end = segment;
middle = parts - (segment * 2);
于 2013-06-30T05:44:58.390 回答
1

这是解决方案:

var start,end,middle;
var parts=10;
if(parts%3==0)
{
start=end=middle=parts/3;
}
else
{
start=parseInt(parts/3);
end=parseInt(parts/3);
middle=parts-start-end;
}
console.warn(start+" "+end+" "+middle);

这是小提琴:http: //jsfiddle.net/j9WUZ/4/

于 2013-06-30T05:41:06.050 回答
0

老实说,我一离开家,一上车,就想起了模数操作。虽然您的大多数答案都有效,而我有一个答案是使用 Modulos,但我在这里必须自私,而且大多数答案都更简单和正确。

var parts=9;
var start = end = middle = (parts - (parts % 3)) / 3;
middle += parts % 3;

但是谢谢大家的帮助!

演示:http: //jsfiddle.net/B5tap/

于 2013-06-30T06:46:19.737 回答