检查所有玩家是否准备就绪

时间:2020-03-13 13:11:51

标签: javascript object for-loop

我需要帮助来遍历玩家的对象并检查所有玩家是否准备就绪。

我有一个名为players的javascript对象,其播放器对象包含一些属性。其中之一是ready。我的目标是在所有玩家ready属性为true的情况下登录控制台“现在所有玩家都准备就绪”。

players = {
  vGlAIs9Nn8viAFQ4AAAA: {
    playerId: 'vGlAIs9Nn8viAFQ4AAAA',
    alive: true,
    ready: true
  },
  c1Acl3kLSUuge0p4AAAB: {
    playerId: 'c1Acl3kLSUuge0p4AAAB',
    alive: true,
    ready: false
  },
  '5nyDlUPtWrYg31EEAAAC': {
    playerId: '5nyDlUPtWrYg31EEAAAC',
    alive: true,
    ready: false
  }
}

4 个答案:

答案 0 :(得分:2)

您可以使用Array.every

const players = {
  vGlAIs9Nn8viAFQ4AAAA: {
    playerId: 'vGlAIs9Nn8viAFQ4AAAA',
    alive: true,
    ready: true
  },
  c1Acl3kLSUuge0p4AAAB: {
    playerId: 'c1Acl3kLSUuge0p4AAAB',
    alive: true,
    ready: false
  },
  '5nyDlUPtWrYg31EEAAAC': {
    playerId: '5nyDlUPtWrYg31EEAAAC',
    alive: true,
    ready: false
  }
};

const values = Object.values(players);

const isReady = values.every(item => !!item.ready);

console.log(isReady);

答案 1 :(得分:1)

这里是满足条件时返回布尔值的函数;

function isEveryoneReady (obj) {
  return Object.values(obj).every(player => player.ready)
}

在下面的代码片段中查看示例:

function isEveryoneReady (obj) {
  return Object.values(obj).every( player => {
    return player.ready
  })
}

notReadyPlayers = {
  vGlAIs9Nn8viAFQ4AAAA: {
    playerId: 'vGlAIs9Nn8viAFQ4AAAA',
    alive: true,
    ready: true
  },
  c1Acl3kLSUuge0p4AAAB: {
    playerId: 'c1Acl3kLSUuge0p4AAAB',
    alive: true,
    ready: false
  },
  '5nyDlUPtWrYg31EEAAAC': {
    playerId: '5nyDlUPtWrYg31EEAAAC',
    alive: true,
    ready: false
  }
}

readyPlayers = {
  vGlAIs9Nn8viAFQ4AAAA: {
    playerId: 'vGlAIs9Nn8viAFQ4AAAA',
    alive: true,
    ready: true
  },
  c1Acl3kLSUuge0p4AAAB: {
    playerId: 'c1Acl3kLSUuge0p4AAAB',
    alive: true,
    ready: true
  },
  '5nyDlUPtWrYg31EEAAAC': {
    playerId: '5nyDlUPtWrYg31EEAAAC',
    alive: true,
    ready: true
  }
}


console.log(isEveryoneReady(notReadyPlayers))
console.log(isEveryoneReady(readyPlayers))

答案 2 :(得分:0)

const players = {
  vGlAIs9Nn8viAFQ4AAAA: {
    playerId: 'vGlAIs9Nn8viAFQ4AAAA',
    alive: true,
    ready: true
  },
  c1Acl3kLSUuge0p4AAAB: {
    playerId: 'c1Acl3kLSUuge0p4AAAB',
    alive: true,
    ready: false
  },
  '5nyDlUPtWrYg31EEAAAC': {
    playerId: '5nyDlUPtWrYg31EEAAAC',
    alive: true,
    ready: false
  }
}

if (Object.values(players).every(item => item.ready)) {
  console.log('All players are ready.')
} else {
  console.log('Some or all players are not yet ready');
}

答案 3 :(得分:0)

let all_ready = true;
for (const player of players) {
  if (!player.ready) {
    all_ready = false;
    break;
  }
}
if (all_ready) {
  console.log("All players are now ready!");
}