2017-03-03 41 views
-1

我認爲這是一個邏輯問題,但說我有這2個對象:我想遍歷的對象和值傳遞給新的對象,而引用另一個對象

{ 
    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: {...} 
     } 
    } 
    } 
} 

我想不到如何通過ea播放器和用戶循環來創建這個對象。任何建議表示讚賞。由於

+0

是否有任何一種邏輯來確定將有多少玩家分配給一個用戶?並且是否已經有代碼選擇一個隨機的未分配球員? – Shilly

+0

將會有一定數量的玩家。我們可以說最多有10名玩家,用戶數量不會超過玩家的數量,但可以匹配它 – Smiter

回答

0

我不知道如果我理解正確的問題,但我會試試看:

下面是一個不完整的代碼,你必須完成它在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; 
     }); 
    }); 
相關問題