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

ES6:在数组中查找包含对象ID的对象,并组合总计[重复]

彭嘉赐
2023-03-14

给定这样一组对象:

[
  {
    playerId: 1,
    playerName: "Cooper",
    assists: 1,
    points: 5,
  },
  {
    playerId: 1,
    playerName: "Cooper",
    assists: 3,
    points: 2,
  },
  {
    playerId: 2,
    playerName: "Tom",
    assists: 1,
    points: 3,
  },
  {
    playerId: 2,
    playerName: "Tom",
    assists: 3,
    points: 1,
  },
  {
    playerId: 3,
    playerName: "Shelby",
    assists: 2,
    points: 7,
  },
  {
    playerId: 3,
    playerName: "Shelby",
    assists: 1,
    points: 2,
  },
]

是否有一种方法可以使用ES6在一组对象中找到匹配的对象关键点(本例中为playerId),然后为这些匹配组合其他对象关键点(辅助和点),以便最终的数组如下所示:


[
  {
    playerId: 1,
    playerName: "Cooper",
    assists: 4,
    points: 7,
  },
  {
    playerId: 2,
    playerName: "Tom",
    assists: 4,
    points: 4,
  },
  {
    playerId: 3,
    playerName: "Shelby",
    assists: 3,
    points: 9,
  },
]

共有1个答案

俞俊逸
2023-03-14

你可以使用数组。原型reduce()。values()按预期返回数组。

let arrIn = [{"playerId":1,"playerName":"Cooper","assists":1,"points":5},{"playerId":1,"playerName":"Cooper","assists":3,"points":2},{"playerId":2,"playerName":"Tom","assists":1,"points":3},{"playerId":2,"playerName":"Tom","assists":3,"points":1},{"playerId":3,"playerName":"Shelby","assists":2,"points":7},{"playerId":3,"playerName":"Shelby","assists":1,"points":2}];

let arrOut = Object.values(arrIn.reduce((acc, current) => {
  let base = acc[current.playerId];
  if (!base) {
    // if we have not processed an object with this playerId yet,
    // simply copy the current object
    acc[current.playerId] = current;
  } else {
    // otherwise, increase the properties
    base.assists += current.assists;
    base.points += current.points;
  }

  return acc;
}, {}));
console.log(arrOut);
 类似资料:
  • 问题内容: 我有一个数组: 我无法更改数组的结构。我正在传递ID为,我想获取数组中的该对象。 如何在JavaScript或jQuery中做到这一点? 问题答案: 使用方法: 从MDN: 如果数组中的元素满足提供的测试功能,则该方法返回数组中的第一个值。否则返回。 如果要查找其 索引 ,请使用: 从MDN: 该方法返回满足提供的测试功能的数组中第一个元素的索引。否则返回-1。 如果要获取匹配元素的数

  • 所以这个问题以前被问过,但我的情况有点不同,因为我已经尝试了这个网站中建议的所有解决方案,我有一个多提及数组: 我还有另一个小数组: 我只想找到与这个“dup”在同一行的“original”。到目前为止,我尝试了查找、过滤和grep,但这些都没有解决我的问题。 我尝试过的代码:

  • 问题内容: 好的,所以我试图从我用来学习Java的书中进行练习。这是我到目前为止的代码: 以下是确切措词的练习: 修改类Calculator.java,以将所有数字按钮保留在声明为10个元素的数组中,如下所示: 替换从10开始的行 带有创建按钮并将其存储在此数组中的循环。 好的,所以我尝试使用声明数组,但这给了我错误: 这行有多个标记- 按钮无法解析为类型- 按钮无法解析为类型 相反,我尝试了这个

  • 这是一个简化的示例,但假设我想在100x100网格上生成5个唯一位置。这些位置将存储在数组[[x, y],…]中。 尝试了生成随机 x 和 y 并检查数组 [x, y] 是否已经在结果数组中的明显方法。如果是,则生成不同的值,如果不生成,则将其添加到结果数组中。 但是,这将永远不会找到重复项,因为数组在技术上是不同的对象。那么,检测数组是否包含“相等”数组/对象的首选方法是什么?

  • 问题内容: 我使用 PostgreSQL 9.5 和Rails5。我想查询下面显示的包含JSON对象数组的列,以返回包含并执行计数的所有JSON数组元素。我使用 的 SQL 显示在json数据下方。运行查询只会返回一个空数组。 这是我的数据: 我想要其中一个sql查询返回: 和另一个查询以返回数组,以便我可以在应用程序中对其调用count,还可以遍历它以创建表单: 我试过这个SQL查询: 我也试过

  • 我使用PostgreSQL 9.5和Rails 5。我想查询下面显示的包含JSON对象数组的jsonb列,以返回包含的所有JSON数组元素,并执行计数 我使用的SQL显示在json数据下面。运行查询只返回一个空数组。 我尝试了这里和这里建议的查询。 这就是我的jsonb数据的样子: 我希望其中一个sql查询返回: 和另一个返回数组的查询,以便我可以在我的应用程序中调用count并循环使用它来创建表