【问题标题】:JavaScript Objects and ArraysJavaScript 对象和数组
【发布时间】:2025-11-29 07:10:01
【问题描述】:

我有一个函数是在 4 组中添加 16 支得分最高的足球队。每组必须有 4 支球队,同一联赛的球队不得超过 2 支。

我在arr 中的联赛名称的每个团队对象中添加了一个属性,并按最高点数对其进行排序。

我不知道如何设置一组不能超过 2 支球队来自一个联赛的条件?

JSFIDDLE 链接:http://jsfiddle.net/6jdjjqfw/

代码:

var tournaments = ['bundes', 'league1', 'premier', 'primera', 'seriea'];
var teams = [];
var groups = [];

function getData(id) {
    var url = "http://api.helloworld.ba/n/app.php?f=" + id;
    return $.getJSON(url);
}

var AJAX = [];
for (i = 0; i < tournaments.length; i++) {
    AJAX.push(getData(tournaments[i]));
}

$.when.apply($, AJAX).done(function () {

    for (var i = 0, len = arguments.length; i < len; i++) {
        teams.push(arguments[i][0]);
    }

    createGroups(teams);
});

function createGroups(teams) {
    var 
        arr = [],
        arra = [],
        arrb = [],
        arrc = [],
        arrd = [],
        br = 1;


    for (i = 0; i < teams.length; i++)
    for (var j = 0; j < teams[i].standing.length; j++) {
        teams[i].standing[j].league = teams[i].leagueCaption;
        arr.push(teams[i].standing[j]);
    }
    arr.sort(function (a, b) {
        return b.points - a.points;
    });

    for (i = 0; i < 4; i++) 
    {
            arra.push(arr[i].teamName);   
            arrb.push(arr[i+4].teamName); 
            arrc.push(arr[i+8].teamName);  
            arrd.push(arr[i+12].teamName);  
    }
    groups.push(arra);
    groups.push(arrb);
    groups.push(arrc);
    groups.push(arrd);

   console.log(teams);
   console.log(arr);

    console.log("Groups listed:\n\n");
    for(i=0; i<groups.length;i++)
    {
        console.log("Group " + br +" " + groups[i]);
        br++;
    }
}

【问题讨论】:

  • 只需在league =&gt; count 地图中保留一个计数器,然后在添加团队之前检查是否有counter[league] &lt;= 2。如果是,请添加团队并增加计数器。如果没有,做你想做的任何其他事情。

标签: javascript jquery arrays ajax


【解决方案1】:

尝试这样做:

  • 在 while 循环中迭代团队(16 项)

  • 使用 1 到 4 之间的随机整数开关来选择每个团队的组

    function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    
  • 添加一个方法来测试一个团队是否已经有 2 个联盟成员,然后再将其添加到组中。还测试组是否未满(4 个成员)如果方法返回 false,则不要将团队添加到组中并且不要增加团队计数器,您将在循环中获得一个新的随机数。

【讨论】: