在 JavaScript 中将数字分割成 n 个相近的部分


问题

我们需要编写一个 JavaScript 函数,该函数将一个数字 num 作为第一个参数,另一个数字 parts 作为第二个参数。

我们的函数应将数字 num 分割成恰好 (parts) 个数字,我们应牢记这两个条件——

  • 数字应尽可能相近
  • 数字应为偶数(如果可能)。

并且数字的顺序并不重要。

例如,如果函数的输入为——

输入

const num = 20;
const parts = 6;

输出

const output = [3, 3, 3, 3, 4, 4];

示例

代码如下——

 在线演示

const num = 20;
const parts = 6;
const splitNumber = (num = 1, parts = 1) => {
   let n = Math.floor(num / parts);
   const arr = [];
   for (let i = 0; i < parts; i++){
      arr.push(n)
   };
   if(arr.reduce((a, b)=> a + b,0) === num){
      return arr;
   };
   for(let i = 0; i < parts; i++){
      arr[i]++;
      if(arr.reduce((a, b) => a + b, 0) === num){
         return arr;
      };
   };
};
console.log(splitNumber(num, parts));

输出

[ 4, 4, 3, 3, 3, 3 ]

更新于: 2021 年 4 月 22 日

976 次浏览

启动你的职业生涯

完成课程即可获得认证

开始
广告