当前位置: 首页 > 知识库问答 >
问题:

对象数组获得具有唯一ID的total

潘胤
2023-03-14

因此,我有一个名为playerscoresdata的对象数组,我需要获得每个球员的得分和犯规总数。

我的问题是我认为我使用了太多的迭代/循环

有没有更干净的解决方案?

null

const playerScoresData = [
  {
    playerId: '1',
    score: 20,
    foul: 3
  },
  {
    playerId: '1',
    score: 5,
    foul: 2
  },
  {
    playerId: '2',
    score: 30,
    foul: 1
  },
  {
    playerId: '2',
    score: 10,
    foul: 3
  }
]

const main = () => {
  let stats = []
  let newData = {}
  const uniqPlayerIds = [...new Set(playerScoresData.map(item => item.playerId))]

  for (var x = 0; x < uniqPlayerIds.length; x++) {
    newData = {
      playerId: uniqPlayerIds[x],
      totalScores: 0,
      totalFouls: 0
    }
    let filteredData = playerScoresData.filter(data => data.playerId === uniqPlayerIds[x])
    for (var y = 0; y < filteredData.length; y++) {
      newData.totalScores += filteredData[y].score
      newData.totalFouls += filteredData[y].foul
    }
    stats.push(newData)
  }
  return stats
}

console.log(main())

null

共有1个答案

李经国
2023-03-14

您可以简单地使用.reduce()方法,以更方便的方式聚合数据:

null

const playerScoresData = [
  {
    playerId: '1',
    score: 20,
    foul: 3
  },
  {
    playerId: '1',
    score: 5,
    foul: 2
  },
  {
    playerId: '2',
    score: 30,
    foul: 1
  },
  {
    playerId: '2',
    score: 10,
    foul: 3
  }
];

const result = playerScoresData.reduce((acc, item) => {
  acc[item.playerId] = acc[item.playerId] || {tScore:0, tFoul: 0}; // set default value if missing
  acc[item.playerId].tScore += item.score;
  acc[item.playerId].tFoul += item.foul;
  return acc;
}, {});

console.log(result);
 类似资料:
  • 我有一组这样的对象: 我想对其进行过滤,以便每个唯一名称都有一个实例,该实例必须给出小于或等于40的最大值。如果过滤,上述情况将返回: 最终的数组不必按任何特定的顺序排序。

  • 我正在尝试使用唯一ID将JSON对象存储在数组中,以便我可以在以后的代码中提取该特定对象,但是我的预期输出没有发生:

  • 问题内容: 当Java中的类未覆盖 hashCode()时 ,打印此类的实例将提供一个不错的唯一数字。 Object的Javadoc谈到了 hashCode() : 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。 但是,当类重写 hashCode()时 ,如何获得其唯一编号? 问题答案: System.identityHashCode(yourObj

  • 块引号 null 爪哇

  • 介绍 在分布式环境中,唯一ID生成应用十分广泛,生成方法也多种多样,Hutool针对一些常用生成策略做了简单封装。 唯一ID生成器的工具类,涵盖了: UUID ObjectId(MongoDB) Snowflake(Twitter) 使用 UUID UUID全称通用唯一识别码(universally unique identifier),JDK通过java.util.UUID提供了 Leach-S

  • 假设我有以下对象数组 现在我想收集具有唯一对象(匹配和)的数组,即。 我能收集所有的东西 但不知道如何过滤掉重复的。有什么建议吗? 编辑:两个不同数组上的我的对象不相同。至少基于属性的数量。