javascript - 如何将一个数字分成 4 个偶数?

标签 javascript

所以,我有 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/

相关文章:

javascript - 检查所有图片何时上传完成?

javascript - 使用 jquery 检查输入类型文件

javascript - 样式化和折叠无序列表

javascript - 如何让javascript回调函数先执行?

javascript - 启用并选择单选按钮并不是进行选择,而是仅在 Firefox 中进行

php - 在较大的表单中上传文件(一个页面上的两个表单),如何同时提交两组数据(文件和表单)? (PHP)

javascript - 在产品模式下构建时如何以 Angular 显示 package.json 中的版本

javascript - ReactJs componentDidMount 执行两次

javascript - Angular.js - 从输入中过滤无效字符的 Controller 函数在输入有效字符之前不会删除字符

javascript - 隐藏/显示 div 最重要的是回来