一个数平均分成一个数组

发布于 2022-09-11 16:57:57 字数 110 浏览 21 评论 0

如题,把一个数变成一个平均的数组
如数字8,均分成4个时变成[2,2,2,2],无法均分时,数组第一项的值可以比第二项大,以此类推,如均分成3个时变成[3,3,2],均分成5个时[2,2,2,1,1]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

困倦 2022-09-18 16:57:57

java代码如下,转换成js应该很容易

   public  int [] splitNum(int num, int len) {
        if (len < 1) {
            return null;
        }
        int [] res = new int[len];
        int divisor = num/len;
        int remainder = num%len;
        Arrays.fill(res, divisor);
        for(int i = 0; i < remainder; i++) res[i]++;
        return res;
    }
゛时过境迁 2022-09-18 16:57:57
function sort(n,s){
  var el = n%s,
      sl = s-el,
      e = parseInt(n/s);
  return el?range((n-sl*e)/el,el).concat(range(e,sl)):
        range(e,sl);
}
sort(8,3);

function range(n,l){
  for(var i=0,newArr=[];i<l;i++)
    newArr.push(n);
  return newArr;
}
戏蝶舞 2022-09-18 16:57:57
const split = (m, n) => [...Array(m%n).fill(m/n+1|0), ...Array(n-m%n).fill(m/n|0)]
放低过去 2022-09-18 16:57:57

这个就有点伸手党了吧,基本思路用这个数字对均分个数取模运算和取余运算,数组各项为取模的值,再对前(取余值)项,每个值加一不就行了吗

白日梦 2022-09-18 16:57:57
     function arrFunc(num, count) {
        let arr = [];
        const data = parseInt(num/count)
        for(let i = 0; i < count; i++){
          const cz = num - data*count;
          if(cz !== 0 && i <= (cz-1)){
            arr.push(data+1)
          }else{
            arr.push(data)
          }

        }
        return arr;
     }

     const a = arrFunc(8,5)
     console.log(a);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文