【问题标题】:Count wins, games and type of game in array of objects and create object of objects在对象数组中计算胜利、游戏和游戏类型并创建对象对象
【发布时间】:2022-07-27 22:53:00
【问题描述】:

我确信已经有一个答案以及一个“简单”的解决方案,但我在过去一个小时内没有找到任何东西。

所以我有这个对象:

[
  {
    "win": false,
    "switched": false
  },
  {
    "win": false,
    "switched": false
  },
  {
    "win": true,
    "switched": true
  },
  {
    "win": true,
    "switched": true
  }
]

这显示了四场 monty-hall 游戏的结果。我想从这个数组创建一个具有以下结构的对象:

{
    switched: {
        played: 2,
        won: 2
    },
    put: {
        played: 2,
        lost: 2
    }
}

所以实际上如果上层数组中的对象有switched: true,我想将switched["played"]的值增加1,它也有won: true,我想将键switched["won"]的值也增加1 . switched: false 反之亦然,我想将结果对象中的所有内容放在键 put 下。

我用reduce尝试了一些相当尴尬的方法,但我认为一定有一种“更简单”的方法(我的方法根本不起作用......)

【问题讨论】:

    标签: javascript arrays reduce


    【解决方案1】:

    考虑到items 持有您的数据

    items.reduce(
      (acc, cur) => {
        return cur["switched"]
          ? {
              ...acc,
              switched: {
                played: acc.switched.played + 1,
                won: acc.switched.won + Number(cur.win),
              },
            }
          : {
              ...acc,
              put: {
                played: acc.put.played + 1,
                won: acc.put.won + Number(cur.win),
              },
            };
      },
      {
        switched: {
          played: 0,
          won: 0,
        },
        put: {
          played: 0,
          lost: 0,
        },
      }
    );
    

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多