【问题标题】:Check if all property values are the same in an Array of Objects检查对象数组中的所有属性值是否相同
【发布时间】:2020-12-27 01:40:54
【问题描述】:

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

let players = [
 0: {isReady: true}, 
 1: {isReady: false}, 
 2: {isReady: true}
]

应该返回假

let players = [
 0: {isReady: true}, 
 1: {isReady: true}, 
 2: {isReady: true}
]

应该返回真

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

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

【问题讨论】:

  • players.every(player =&gt; player.isReady)
  • 什么时候一样?或者什么时候都为真?

标签: javascript arrays object


【解决方案1】:

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

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

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

2- 通过使用 Set 数据结构

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

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2023-03-26
    • 2012-05-20
    • 1970-01-01
    • 2021-12-10
    • 2021-08-19
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    相关资源
    最近更新 更多