检查对象数组中的所有属性值是否相同

Car*_*onK 2 javascript arrays object

我有一个对象数组,所有对象都具有与 isReady 相同的属性名称。我想在所有对象 isReady 属性为 true 时启动一个函数。

let players = [
 0: {isReady: true}, 
 1: {isReady: false}, 
 2: {isReady: true}
]
Run Code Online (Sandbox Code Playgroud)

应该返回 false

let players = [
 0: {isReady: true}, 
 1: {isReady: true}, 
 2: {isReady: true}
]
Run Code Online (Sandbox Code Playgroud)

应该返回 true

for(let i = 0; i < players.length; i++) {
  if(players[i].isReady === true) {
    startGame()
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试循环所有对象,但即使 1 个对象具有 true 值,if 语句也会返回 true。

Sun*_*nny 5

您可以通过两种方式实现这一目标

1-通过使用数组内置方法 every 在检查完整数组后将返回布尔值。例子-

let players = [
{isReady: true}, 
 {isReady: true}, 
  {isReady: true}]
const isPlayersReady = players.every(data=> data.isReady)
if(isPlayersReady ){
startGame()
}
Run Code Online (Sandbox Code Playgroud)

2-通过使用Set数据结构

let result = players.map(a => a.isReady);
console.log(new Set(result).size === 1); // True
Run Code Online (Sandbox Code Playgroud)