【问题标题】:I want to loop through an object and pass the value to a new object while referencing another object我想遍历一个对象并将值传递给一个新对象,同时引用另一个对象
【发布时间】:2017-03-03 16:20:16
【问题描述】:

我认为这是一个逻辑问题,但我说我有这两个对象:

{
  players: {
    player1: {
      name: 'name1'
    },
    player2: {
      name: 'name2'
    },
    player3: {
      name: 'name3'
    },
    player4: {
      name: 'name4'
    },
    player5: {
      name: 'name5'
    }
  }
}

{
  users: {
    user1: {
      name: 'user1'
    },
    user2: {
      name: 'user2'
    }
  }
}

我想循环播放播放器并将播放器分配给用户,然后移动到下一个用户并分配播放器,依此类推。用户总是比玩家多,所以它需要回到用户对象的开头并继续遍历玩家对象,所以我在它的末尾有一个对象,如下所示:

{
  assigned: {
    user1: {
      name: 'user1',
      players {
        player1: {...},
        player3: {...},
        player5: {...}
      }
    },
    user2: {
      name: 'user2',
      players {
        player2: {...},
        player4: {...}
      }
    }
  }
}

我想不出如何循环播放器和用户来创建这个对象。任何建议表示赞赏。谢谢

【问题讨论】:

  • 是否有任何一种逻辑可以确定将多少玩家分配给一个用户?并且您是否已经拥有选择随机未分配玩家的代码?
  • 玩家数量有限。可以说最多10个玩家,用户数不会超过玩家数但可以匹配

标签: javascript loops object


【解决方案1】:

我不知道我是否正确理解了你的问题,但我会试一试:

以下是不完整的代码,您必须在 javascript 中完成。请记住,您正在创建一个具有循环依赖关系的 JSON 对象,这意味着您可以在 json 树中无休止地迭代。

    var players = json.players;
    var users = json.users;

    // asigning users to players
    Object.keys(players).forEach(function(keyP) {
        var player = players[keyP];
        Object.keys(users).forEach(function(keyU) {
            var user = users[keyU];
            // custom logic to determine if user can be assigned
            // logic for assigning user
            if (!user.players) {
                user.players = {};
            }
            user.players[keyP] = player;
        });
    });

    // asigning players to users
    Object.keys(users).forEach(function(keyU) {
        var user = users[keyU];
        Object.keys(players).forEach(function(keyP) {
            var player = players[keyP];
            // custom logic to determine if player can be assigned
            // logic for assigning player
            if (!player.users) {
                player.users = {};
            }
            player.users[keyU] = user;
        });
    });

【讨论】:

    猜你喜欢
    • 2015-09-15
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-05-02
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多