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

按对象类别为多个数组求深度嵌套数组数据之和

戚俊健
2023-03-14

我有一个函数返回包含2个数组的2个数组。

[Array(3), Array(3)]

[Array(3), Array(3)]

这些嵌套数组每个包含6个对象

{value: "10.50", category: "a"}, 
{value: "55.50", category: "a"}
{value: "10.50", category: "b"}, 
{value: "35.50", category: "b"},
{value: "15.50", category: "c"},
{value: "45.50", category: "c"}

我正在尝试迭代每个主2数组,并按类别返回嵌套数组的求和值,如下所示:记住,值当前是一个字符串

[
 [
  {value: "66.00", category: "a"},
  {value: "46.00", category: "b"},
  {value: "61.00", category: "c"},
 ]
]

我已经尝试了下面的,但我似乎不能得到它的权利,我看了许多这样的线程,我知道有吨类似的,但没有任何工作为我目前为止。蒂娅。

我可怜的尝试。

  const x = array.forEach((data) => {
    data.reduce(function (
      acc: any[],
      val: { category: string; value: string }
    ) {
      const o = acc
        .filter(function (obj) {
          return obj.category === val.category;
        })
        .pop() || { category: val.category, value: 0 };

      o.value += parseFloat(String(val.value));
      acc.push(o);
      return acc;
    },
    []);
  });

共有1个答案

顾嘉良
2023-03-14

听起来,您只需分组到一个由category索引的对象中,将值相加,确保将字符串强制为数字,然后将其转换为对象数组:

null

const outerArr = [
  [
    {value: "10.50", category: "a"}, 
    {value: "55.50", category: "a"},
    {value: "10.50", category: "b"}, 
    {value: "35.50", category: "b"},
    {value: "15.50", category: "c"},
    {value: "45.50", category: "c"}
  ],
  // etc
];

const final = outerArr.map((subarr) => {
  const grouped = {};
  for (const { value, category } of subarr) {
    grouped[category] = (grouped[category] || 0) + Number(value);
  }
  return Object.entries(grouped).map(([category, value]) => ({ value: value.toFixed(2), category }));
});
console.log(final);
 类似资料:
  • 尝试使用所有独特的硬币进行选择过滤器,但无法正确到达其末尾。 在循环浏览数据时,我可以得到所有硬币的列表。 我还想使用Set方法和spread操作符来获得唯一的值,但我不知道如何组合所有这些。

  • 我有一个班级结构 我使用数据绑定,房间和匕首。我得到编译错误为找不到类数据库组件,可能是因为房间不允许持久化的嵌套对象。为了启用,我使用了@嵌入式注释,但仍然得到相同的错误。但是如果我使用@Ignore注释,指示不处理该字段的Room;编译正在成功进行。 请参阅https://developer.android.com/topic/libraries/architecture/room.html#

  • 我需要更新嵌套在我的用户文档中的一个字段,该字段包含一个part对象数组,以添加新的part。一个part对象如下所示: 所以这意味着$addToset对我的情况没有好处...现在我不知道该怎么办。

  • 该示例摘自Elasticsearch参考:https://www.elastic.co/guide/en/Elasticsearch/reference/5.3/nested.html 我的索引和这个差不多。唯一的区别是user.first和user.last是关键字类型,所以我可以对它们使用过滤器。 在两种情况下,我应该使用什么查询来获取与上面数组匹配的文档(正好是两个项,一个项是John Sm

  • 我有一个mongodb文档,我正在使用axios ajax调用来提取它。文档有一个对象数组,其中还包含一个嵌套的对象数组。每个对象都分配了一个mongo id。最顶端的数据显示在相应的最顶端的表示组件中,但对象的后续阵列不会显示在其相对表示组件中。我得到的错误是。“TypeError:this.props.card.rdfts未定义”,但会显示它的非数组同级。然而,当我查看react-dev工具和