如何生成分数的值

问题描述 投票:0回答:2

我有23支球队,我想将他们分成1到4组。当我分成2组时,它正在工作,但是当我将它们分成3-4组时,总共不是23个团队,有没有办法将它们分享到输入文本?

我认为逻辑是这样的

团队总数:当我分成1组A组时,23支球队:23支球队

如果我分成2组A组:12组B组:11支球队

如果我分成3组A组:8组B组:8组C组:7组

所以团队的总数仍然是一样的

form image

    $('#total_group').on('change', function() {
      var total_group = $('#total_group').val();
      var participant = $('#team_ready').val();
     if (total_group != "") {
        // var first = Math.ceil(participant/total_group);
        var divided = Math.ceil(participant / total_group);
        var first = divided;
        var second = first - participant;
        var third = first - second;
        var fourth = second - third;
        var answer = [first, second, third, fourth];
        $('#split_group').css("display", "flex");
        var grouping = [];
        var alpha = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
        for (var i = 0; i < total_group; i++) {
          var content_data = "<div class='form-group' align='center' style='margin-bottom:5px;'><label>GROUP " + alpha[i] + "</label><input type='text' id='url_partner' name='url_partner' class='form-control' value='" + answer[i] + "'  required></div>";
          grouping.push(content_data);
        }
        var split_group = grouping.join('');
        $('#split_group').html(split_group);
      } else {
        $('#split_group').css("display", "none");
      }
    });  

my code image

请帮忙

javascript jquery arrays
2个回答
2
投票

由于23不能很好地分解为2,3或4,你可以创建一个像这样的通用函数来将任何一组队伍分成若干组

function groupTeams(teams, group_count) {
    var groups = [];
    var current_group = 0;

    for ( var i = 0; i < teams.length; i++ ) {
        // make sure that the group is an array
        if ( !groups[ current_group ] ) {
            groups[ current_group ] = []
        }
        // add the team
        groups[current_group].push( teams[i] )
        // and move to the next group
        current_group += 1;
        // go back to the beginning if we hit the end.
        if ( current_group >= group_count ) {
            current_group = 0
        }
    }

    return groups;
}

然后,您可以在任何地方调用此功能,将任意数量的团队分组到任意数量的组中(如您所指出的那样,并非总是均匀)

例如:

var teams = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

// groups becomes array of 4 arrays containing the teams in each group
var groups = groupTeams( teams, 4 );

// and you can use the array functions to get metadata about these groups, such as their size...
var group_totals = groups.map( g => g.length )

// update UI based on groups

0
投票
$('#total_group').on('change',function(){
        var total_group = $('#total_group').val();
        // var participant = $('#team_ready').val();

        if(total_group!=""){
            // var first = Math.ceil(participant/total_group);
            var divided = Math.ceil(23/total_group);
            var participant = 23;
            if(total_group=="1"){
                var first=divided;
                var second=participant-first;
                var third="";
                var fourth="";
            }else if(total_group=="2"){
                var first=divided;
                var second=participant-first;
                var third="";
                var fourth="";
            }else if(total_group=="3"){
                var first=divided;
                var second=divided;
                var third=participant-first-second;
                var fourth="";
            }else if(total_group=="4"){
                var first=divided;
                var second=divided;
                var third=divided;
                var fourth=participant-first-second-third;
            }
            var answer = [first,second,third,fourth];

            $('#split_group').css("display","flex");
            var grouping=[];
            var alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
            for(var i=0;i < total_group;i++){
                var content_data="<div class='form-group' align='center' style='margin-bottom:5px;'><label>GROUP "+alpha[i]+"</label><input type='text' id='url_partner' name='url_partner' class='form-control' value='"+answer[i]+"'  required></div>";
                grouping.push(content_data);
            }
            var split_group=grouping.join('');
            $('#split_group').html(split_group);
        }else{
            $('#split_group').css("display","none");
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.