Tengo el siguiente código que baraja los registros de cadena de los jugadores, objeta a Record<string(Team name),Record<string,object>(Player's)> pero cada equipo necesita tener un capitán.
var randomProperty = function (obj, amount) { var keys = Object.keys(obj); const newObj = []; for (let index = 0; index < amount; index++) { const item = keys[(keys.length * Math.random()) << 0]; newObj.push(obj[item]); delete obj[item]; } return newObj; }; function shuffle(teamSize) { let teams = { unknown: { ["1"]: { role: "test", captain: false }, ["2"]: { role: "test", captain: false }, ["3"]: { role: "test", captain: false }, ["4"]: { role: "test", captain: false } } }; const playersClone = Array.from(Object.entries(teams.unknown)); const teamCount = Math.floor(playersClone.length / teamSize); const clone = Array.from(playersClone).slice(0, teamCount * teamSize); const captains = clone.filter((x) => x[1].captain).length == 0 ? randomProperty(clone, teamCount) : clone.filter((x) => x[1].captain); for (let i = 0; i < playersClone.length; i++) { const captains = clone; const player = clone.splice(Math.random() * clone.length, 1)[0]; teams = { ...teams, [i % teamCount]: { ...teams[i % teamCount], [player[0]]: { role: player[1].role, captain: player[1].captain } } }; } return teams; } console.log(shuffle(2));Lo que quiero lograr es que antes de barajar los equipos, deben tener un capitán en cada equipo.