Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算数字的开始、中间和结束_Javascript_Jquery_Css_Math - Fatal编程技术网

Javascript 计算数字的开始、中间和结束

Javascript 计算数字的开始、中间和结束,javascript,jquery,css,math,Javascript,Jquery,Css,Math,我需要一个任意给定数字的起始值、中间值和结束值,它不需要平均分布,只需要一点逻辑。例如: var部分=3 很明显,我可以把这个值除以3,得到一个均匀的结果start:1;中等:1;结束:1 但是,如果用户要输入以下内容: var部分=8 在我看来,答案是start:2;中:4人;结束:2 我需要根据“parts”变量的长度执行一项基本任务 例如: 我需要计算起始值、中间值和结束值,这样我就可以这样做 for (var t=0; t < start; t++){ console.lo

我需要一个任意给定数字的起始值、中间值和结束值,它不需要平均分布,只需要一点逻辑。例如:

var部分=3

很明显,我可以把这个值除以3,得到一个均匀的结果
start:1;中等:1;结束:1

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

var部分=8

在我看来,答案是
start:2;中:4人;结束:2

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

例如:

我需要计算起始值、中间值和结束值,这样我就可以这样做

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');
}
for(var t=0;t
我如何计算呢?

以下是解决方案:

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);
这是小提琴:

这是解决方案:

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);

这是提琴:

说实话,我一离开家,上车,就想起了那件事。虽然你们的大多数答案都是有效的,我有一个答案是使用模,但我必须在这里自私一点,而且是一个更简单、更正确的版本

var parts=9;
var start = end = middle = (parts - (parts % 3)) / 3;
middle += parts % 3;
但是谢谢大家的帮助


演示:

说实话,我一离开家,坐上我的车,就想起了那次事故。虽然你们的大多数答案都是有效的,我有一个答案是使用模,但我必须在这里自私一点,而且是一个更简单、更正确的版本

var parts=9;
var start = end = middle = (parts - (parts % 3)) / 3;
middle += parts % 3;
但是谢谢大家的帮助



演示:

你能添加任何约束吗?我的意思是你能更具体一点吗?数字必须如何分布?我添加了另一个示例,我希望这有帮助,数字需要均匀分布,如果不能,中间会取较高的值,就像我的示例中零件变量==8@TimeToogoI编辑了我的问题@UsualSuspect查看下面的解决方案..希望这就是你想要的。你能添加任何约束吗?我的意思是你能更具体一些吗?数字必须如何分布?我添加了另一个示例,我希望这有帮助,数字需要均匀分布,如果不能,中间的值将取更高的值,就像我的例子中的parts变量==8@TimeToogi编辑了我的问题@UsualSuspect查看下面的解决方案..希望这就是你要找的。是的,差不多了。你的意思是
middle=parts-2*segment
,除非我大错特错:)这很酷,我不知道这一点,但我决定用我自己的答案,它更简单:)是的,差不多。你的意思是
middle=parts-2*segment
,除非我大错特错:)这很酷,我不知道这一点,但是我决定用我自己的答案,它更简单:)谢谢你发布这篇文章,不过你的例子似乎不起作用?虽然我在这里发布了我自己的答案,但似乎要简单得多:)@ShannonHochkins哦,我忘了更新小提琴。现在它被更新了。我看到了非常好的解决方案谢谢你发布这篇文章,不过你的例子似乎不起作用?虽然我在这里发布了我自己的答案,但似乎要简单得多:)@ShannonHochkins哦,我忘了更新小提琴。现在它被更新了。我看到了非常好的解决方案这使得模算子的使用非常糟糕
Math.floor(parts/3)
(parts-(parts%3))/3
更容易理解。我发现读一些东西是按照它应该如何写的,而不是读模函数的javascripts解释@JackI不知道哪部分是模函数的解释?我提到的代码部分只涉及除法。我确实包含了一个链接,这是使用javascript编写Modulo的方式,必须使用数学模块重新编写它。如果目的是不使用
数学
,那么我想这很好;再次,我只是指出,要计算公共部分,没有模会更容易
Math.floor(parts/3)
(parts-(parts%3))/3
更容易理解。我发现读一些东西是按照它应该如何写的,而不是读模函数的javascripts解释@JackI不知道哪部分是模函数的解释?我提到的代码部分只涉及除法。我确实包含了一个链接,这是使用javascript编写Modulo的方式,必须使用数学模块重新编写它。如果目的是不使用
数学
,那么我想这很好;再次,我只是指出,要计算公共部分,没有模会更容易。