gpt4 book ai didi

javascript - 处理对象数组并将它们分配为 4 个一组

转载 作者:行者123 更新时间:2023-12-02 16:21:31 25 4
gpt4 key购买 nike

我正在尝试处理一个对象数组(代表游戏玩家),以根据每个对象当前的组值为其分配一个组号。

问题是每个组应该有尽可能接近的四名玩家,并且一些玩家希望属于特定的组,该组不能被破坏(但可以重命名或合并)。

一些玩家有未分配/空的组(他们不想与特定的人一起玩),而其他玩家则想与特定的人一起玩,因此他们有自定义组值。

var players = [
{name: "A", group: null},
{name: "B", group: null},
{name: "C", group: null},
{name: "D", group: null},
{name: "E", group: null},
{name: "cA", group: "custom1"},
{name: "cB", group: "custom1"},
{name: "cC", group: "custom2"},
{name: "cD", group: "custom2"},
{name: "cE", group: "custom3"},
{name: "cF", group: "custom3"}];

我需要一种方法来解析这个数组,以便它返回如下所示的内容:

var resolvedGroup = [
{name: "A", group: 1},
{name: "B", group: 1},
{name: "C", group: 1},
{name: "D", group: 1},
{name: "cA", group: "customMerged1"},
{name: "cB", group: "customMerged1"},
{name: "cC", group: "customMerged1"},
{name: "cD", group: "customMerged1"},
{name: "cE", group: 2},
{name: "cF", group: 2},
{name: "E", group: 2}
]

您可以看到,前四名玩家应分配到组 1,而最初拥有自定义组的玩家应合并为四人组(如果可能) - 否则,他们应该让一些“空”组玩家加入尽可能让四名玩家组成一个小组。组的名称并不重要,唯一重要的是指定自定义组的每个玩家都应该能够保留初始组成员,即使他们与另一个自定义组合并也是如此。

最佳答案

这需要几个步骤和大量的编码。您可能必须尝试各种事情并提出最佳解决方案。我将从以下开始:

1) 根据玩家数量确定您需要多少组。最有可能的是 Math.ceil(numPlayers/4);

2) 按该大小创建一个组数组。这可能就像每组中玩家数量的数组一样简单。

3) 按组名称对玩家列表进行排序(使用排序和自定义比较功能)。

4)遍历排序列表,对于每个组名称,计算该组中玩家的数量,找到一个可以容纳这么多玩家的组,并将它们全部添加到该组中。

5) 浏览剩余的玩家,将每个玩家添加到一个组中。我将从组数组的末尾开始,在添加每个玩家后向后移动,当它到达开头时循环回到组数组的末尾。

关于javascript - 处理对象数组并将它们分配为 4 个一组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com