减少包含另一个数组的对象数组,按相同对象的名称进行减少

马利卡

我有一个Javascript对象数组。每个对象都包含一个data在此感兴趣的数组我想减少所有具有相同名称的对象的数组(不同的ID无关紧要,因为稍后我想在图中绘制数据)。

norm.series = [
{ id: "qah01", name: "Bingo", data: [ ["date1", 1.5] ] },
{ id: "qah02", name: "Combo", data: [ ["date2", 2.5] ] },
{id: "qah03", name: "Bingo", data: [ ["date1", 0.5], ["date3", 1.2], ["date4", 2.0] ] }, 
{ id: "qah04", name: "Sango", data: [ ["date7", 3.2], ["date8", 2.8] ] }
]

What I yould like is the following:

norm.series [
{ id: "qah01", name: "Bingo", data: [ [date1, 2.0], [date3, 1.2], [date4, 2.0] ] },
{ id: "qah02", name: "Combo", data: [ [date2, 2.5] ] },
{ id: "qah04", name: "Sango", data: [ [date7, 3.2], [date8, 2.8] ] }
]

到目前为止,这是我所做的:

const result = norm.series.reduce((acc, d) => {
    const found = acc.find((a, index) => a.data[index][0] === d.data[index][0]);
    const dataNew = a.data[index][1] + d.data[index][1];
    if (!found) {
       acc.push({id: d.id, name:d.name, data: d.data})
    }
    else {
       found.data.push(dataNew);
    }
    return acc;
}, []);
Wang Derek |

您可以使用Array.reduce方法获得结果在内部Array.reduce,您可以使用查找匹配的值Array.findIndex并为其创建处理程序。

const input = [
  { id: "qah01", name: "Bingo", data: [ [ 'date1', 1.5 ] ] },
  { id: "qah02", name: "Combo", data: [ [ 'date2', 2.5 ] ] },
  { id: "qah03", name: "Bingo", data: [ [ 'date1', 0.5 ], [ 'date3', 1.2 ], [ 'date4', 2.0 ] ] }, 
{ id: "qah04", name: "Sango", data: [ [ 'date7', 3.2 ], [ 'date8', 2.8 ] ] }
];

const output = input.reduce((acc, cur) => {
  const matchedIndex = acc.findIndex(({ name }) => name === cur.name);
  if (matchedIndex >= 0) {
    acc[matchedIndex].data = acc[matchedIndex].data.concat(cur.data).reduce((tor, curV) => {
      const matchedDataInd = tor.findIndex(([dateName, dateValue]) => dateName === curV[0]);
      if (matchedDataInd >= 0) {
        tor[matchedDataInd][1] += curV[1];
        return tor;
      } else {
        return [ ...tor, curV ];
      }
    }, []);
    return acc;
  } else {
    return [ ...acc, cur ];
  }
}, []);

console.log(output);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按另一个数组对对象的数组列表进行排序

来自分类Dev

按另一个数组对对象数组进行排序

来自分类Dev

通过另一个数组中包含的对象属性对Javascript数组进行排序

来自分类Dev

减少的阵列到另一个数组

来自分类Dev

Javascript按另一个数组对对象进行排序

来自分类Dev

一些对象包含另一个数组的对象数组,需要通过包含数组的对象中的值对其进行过滤

来自分类Dev

合并多个数组(对象)并与另一个数组进行比较

来自分类Dev

来自包含对象的数组的对象,其中对象的值包含在另一个数组中

来自分类Dev

从另一个数组更新对象数组

来自分类Dev

对象数组将相同的值分隔成另一个数组的键

来自分类Dev

从一个数组中删除与另一个对象数组相同的对象

来自分类Dev

如何搜索对象数组包含另一个数组中的项目?

来自分类Dev

根据包含javascript中键的另一个数组过滤对象数组

来自分类Dev

检查对象内部的另一个数组中是否包含一个数组

来自分类Dev

根据另一个数组对对象数组进行排序

来自分类Dev

将对象数组与另一个数组循环函数进行比较

来自分类Dev

使用另一个数组对固定对象数组进行排序

来自分类Dev

如何使用另一个数组作为参考对对象数组进行排序?

来自分类Dev

如何按照包含每个对象中存在的属性的唯一值的另一个数组的顺序对对象数组进行排序?

来自分类Dev

对包含由数组表示的另一个对象的对象进行改造调用

来自分类Dev

在另一个数组内的JavaScript对象数组中按属性查找对象

来自分类Dev

如果对象包含另一个数组中存在值的属性,则过滤对象数组

来自分类Dev

过滤数组并返回包含最接近字符串的对象,该对象在一个对象内的数组内,另一个数组内

来自分类Dev

如何在一个数组中命中相同对象?

来自分类Dev

将对象从一个数组推到另一个数组

来自分类Dev

根据包含来自另一个数组的所有值的数组属性过滤对象数组

来自分类Dev

Javascript:根据另一个对象数组对一个对象数组进行排序

来自分类Dev

如何遍历对象数组与另一个数组中的公共元素匹配并返回“名称”的键值

来自分类Dev

如何将对象从对象中的数组推到另一个数组?

Related 相关文章

  1. 1

    按另一个数组对对象的数组列表进行排序

  2. 2

    按另一个数组对对象数组进行排序

  3. 3

    通过另一个数组中包含的对象属性对Javascript数组进行排序

  4. 4

    减少的阵列到另一个数组

  5. 5

    Javascript按另一个数组对对象进行排序

  6. 6

    一些对象包含另一个数组的对象数组,需要通过包含数组的对象中的值对其进行过滤

  7. 7

    合并多个数组(对象)并与另一个数组进行比较

  8. 8

    来自包含对象的数组的对象,其中对象的值包含在另一个数组中

  9. 9

    从另一个数组更新对象数组

  10. 10

    对象数组将相同的值分隔成另一个数组的键

  11. 11

    从一个数组中删除与另一个对象数组相同的对象

  12. 12

    如何搜索对象数组包含另一个数组中的项目?

  13. 13

    根据包含javascript中键的另一个数组过滤对象数组

  14. 14

    检查对象内部的另一个数组中是否包含一个数组

  15. 15

    根据另一个数组对对象数组进行排序

  16. 16

    将对象数组与另一个数组循环函数进行比较

  17. 17

    使用另一个数组对固定对象数组进行排序

  18. 18

    如何使用另一个数组作为参考对对象数组进行排序?

  19. 19

    如何按照包含每个对象中存在的属性的唯一值的另一个数组的顺序对对象数组进行排序?

  20. 20

    对包含由数组表示的另一个对象的对象进行改造调用

  21. 21

    在另一个数组内的JavaScript对象数组中按属性查找对象

  22. 22

    如果对象包含另一个数组中存在值的属性,则过滤对象数组

  23. 23

    过滤数组并返回包含最接近字符串的对象,该对象在一个对象内的数组内,另一个数组内

  24. 24

    如何在一个数组中命中相同对象?

  25. 25

    将对象从一个数组推到另一个数组

  26. 26

    根据包含来自另一个数组的所有值的数组属性过滤对象数组

  27. 27

    Javascript:根据另一个对象数组对一个对象数组进行排序

  28. 28

    如何遍历对象数组与另一个数组中的公共元素匹配并返回“名称”的键值

  29. 29

    如何将对象从对象中的数组推到另一个数组?

热门标签

归档