Проверьте, готовы ли все игроки - PullRequest
0 голосов
/ 13 марта 2020

Мне нужна помощь для l oop через объект игрока и проверки, готовы ли все игроки.

У меня есть javascript объект с именем players с объектом игрока, который содержит несколько свойств. Одним из них является 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 ]

2 голосов
/ 13 марта 2020

Вы можете использовать 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 голос
/ 13 марта 2020

Вот функция, которая возвращает логическое значение при выполнении условия;

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))
0 голосов
/ 13 марта 2020
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!");
}
0 голосов
/ 13 марта 2020

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');
}
...