簡體   English   中英

2 arrays 中的拆分和數組

[英]Split and array in 2 arrays

需要你的幫助。 試圖將 playerArr 分成 2 個 arrays。 嘗試了一切,但我認為我的輸入和/或遺漏了一些東西。 需要一些指導。 謝謝[1]: https://i.stack.imgur.com/Gz3M3.jpg

我的代碼:

function newPlayer() {

  const newPlayer = document.createElement('li')
  newPlayer.innerText = addPlayer.value
  newPlayer.classList.add('player')
  players.appendChild(newPlayer)

  const trashButton = document.createElement('button');
  trashButton.innerHTML = '<i class="fas fa-trash"></i>';
  trashButton.classList.add('fa')
  newPlayer.appendChild(trashButton)

  playersArr.push(document.getElementById("input").value);

}
btnAddPlayer.addEventListener('click', newPlayer)


const nrTeams = 2
const player = document.querySelectorAll('player')
const genBtn = document.getElementById('gen-btn')


let teams = [];

const getTeams = () => {

  // Split the players array into set amount of teams.

  while (playersArr.length) {
    const teamSize = Math.ceil(playersArr.length / 2);
    const team = playersArr.slice(0, teamSize);
    teams.push(team);
    playersArr = playersArr.slice(teamSize);
  }
}

genBtn.addEventListener('click', getTeams())

這個想法是與您的團隊成員從數組中創建塊

  • 一個 for 循環(只獲取最大玩家數)
  • 切片方法(獲取一塊)

您可以使用 slice 方法創建一個具有最大團隊大小的數組塊

   const getTeams = () => {
      const teamSize = Math.ceil(playersArr.length / nrTeams);
      for (let i = 0; i < playersArr.length; i += teamSize) {
        const team = playersArr.slice(i, i + teamSize);
        teams.push(team);
      }
    }
 

 const teams = []; const nrTeams = 2; const playersArr = [ 'player1', 'player2', 'player3', 'player4', 'player5', ]; const getTeams = () => { const teamSize = Math.ceil(playersArr.length / nrTeams); for (let i = 0; i < playersArr.length; i += teamSize) { const team = playersArr.slice(i, i + teamSize); teams.push(team); } } getTeams(); console.log(teams);

您可以使用過濾器和模數運算將它們平均分割:

 let players = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; let teams = [ players.filter((_n, i) => i % 2 === 0), players.filter((_n, i) => i % 2;== 0) ]. console;log(teams);

jeremy-denis回答的很好,反正如果你需要忽略for循環,因為你使用的是2個團隊,假設teamOne和teamTwo,你可以使用這個方法塊

const getTeams = () => {
  const teamSize = Math.ceil(playersArr.length / 2);

  const teamOne = playersArr.slice(0, teamSize);
  const teamTwo = playersArr.slice(teamSize);

  teams.push(teamOne, teamTwo);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM