所以,我有 4 个随机数:
假设我想平均分配所有这些,使它们都相等。如果我有任何余数,那么余数将被添加到第一个数字上。
var a = number1 + number2 + number3 + number4;
var b = math.floor(number1) + math.floor(number2) + math.floor(number3) + math.floor(number4) + 0;
var c = math.floor(number1) + math.floor(number2) + math.floor(number3) + math.floor(number4) + 1;
var d = math.floor(number1) + math.floor(number2) + math.floor(number3) + math.floor(number4) + 2;
var e = math.floor(number1) + math.floor(number2) + math.floor(number3) + math.floor(number4) + 3;
if (a = b){
remainder0()
}
if (a = c){
remainder1()
}
if (a = d){
remainder2()
}
if (a = e){
remainder3()
}
function remainder0(){
number1 = (a / 4);
number2 = a / 4;
number3 = a / 4;
number4 = a / 4;
}
function remainder1(){
number1 = (a / 4) + 1;
number2 = a / 4;
number3 = a / 4;
number4 = a / 4;
}
function remainder2(){
number1 = (a / 4) + 2;
number2 = a / 4;
number3 = a / 4;
number4 = a / 4;
}
function remainder3(){
number1 = (a / 4) + 3;
number2 = a / 4;
number3 = a / 4;
number4 = a / 4;
}
if 语句似乎不起作用,如果 remainder0() 函数起作用,则 4 个数字似乎不合适并且有意义。
最佳答案
您可以得到所有数字的总和,然后计算出该总和除以您拥有的数字的个数。然后,您可以算出余数,并将其加到第一个数字上:
const evenlyDistribute = numbers => {
const sum = numbers
.reduce((p, c) => p + c, 0);
const evenly = Math.floor(sum / numbers.length);
const remainder = sum % numbers.length;
const asList = Array.from(new Array(numbers.length).keys())
.fill(evenly);
return asList.map((x, i) => i === 0 ? x + remainder : x);
}
const x = evenlyDistribute([13, 30, 30, 30]);
console.dir(x);
正如您在评论中建议的那样,您不想使用除基本 javascript 之外的任何东西,也不想使用数组,这里有一个这样的实现:
var numberOne = 13;
var numberTwo = 30;
var numberThree = 30;
var numberFour = 30;
var totalSum = numberOne + numberTwo + numberThree + numberFour;
var evenSplit = Math.floor(totalSum / 4);
numberOne = evenSplit + (totalSum - (4 * evenSplit));
numberTwo = evenSplit;
numberThree = evenSplit;
numberFour = evenSplit;
console.log(numberOne, numberTwo, numberThree, numberFour);
这段代码不是很好。更改此代码比应该更困难,例如,更改正在处理的数字数量,或者如何在数字之间分配总和
这段代码也不是很好,因为它会改变变量。找出此代码不同部分的
numberOne
是什么相当容易,但遵循此模式意味着进一步的更改可能会使事情变得难以遵循。
最后一点;当你在 Stack Overflow 上提问时,如果你把你的要求放在你原来的问题中,你会得到更好的答案。此外,“基本”javascript 到底是什么?为什么不能使用数组?包括这类内容会让您更快地切入正题,并防止您浪费别人的时间。
关于javascript - 如何将一个数字分成 4 个偶数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56805376/