首页 > 解决方案 > 每次迭代创建新数组

问题描述

我可能看错了,但我正在尝试制作一个tournament括号创建者。您输入的名称被输入到一个名为players我只希望括号的每一侧都有four玩家的对象中。所以我认为最好的做法是找出sides我在括号中会有多少人,一旦我知道了,我可以查看这些边,并且对于每个循环,我可以将球员放在那些地方,sides但我遇到了一点的一个问题。我不知道如何动态地创建这些sides每个通道。我删除了一些我的错误代码,所以你可以看到我的想法

const players = []


function Player(name, deck){
    this.name = name
    this.deck = deck
    this.points = 0
    this.id = players.length + 1 
}

function addPlayer(){
    let player = new Player (
        document.getElementById('name').value,
        document.getElementById('deck').value
    )
    //console.log(player)
    document.getElementById('name').value = ''
    document.getElementById('deck').value = ''
    players.push(player)
    logPlayers()
}

function logPlayers (){
    output = ''
    for (let index = 0; index < players.length; index++) {
        output += (index + 1) + ') ' + players[index].name + ' | ' + players[index].deck + '<br>'
    }
    document.getElementById('output').innerHTML = output
}

function initGame(){
    game = ''
    let cube = []
    const four = Math.floor(players.length/4)
    //console.log(four)
    const remainder = four % 1
    for (let index = 0; index < four; index++) {
        
        for (let j = 0; j < 4; j++) {
            
            
        }
        
    }

}

我的阵列cube是我将要使用的sidesfour也是sides我将拥有的阵列。我将遍历它们,并且在该循环中,我将确保每个人只放 4 名球员,但是我对如何创建不同的cubes每次传球感到困惑。

我希望我正确解释了这一点

标签: javascriptloops

解决方案


let cube = []
const four = Math.ceil(players.length/4)
let playerIndex = 0;
for (let index = 0; index < four; index++) {
    
    for (let j = 0; j < 4; j++) {
        if (!cube[index]) {
            cube[index] = [];
        }
        
        cube[index].push(player[playerIndex])
        playerIndex++
    }
    
}

这可能是你想要的?

player[playerIndex] 将通过他们的数组索引成为单个玩家,假设 player 是一个包含玩家的数组。


推荐阅读