javascript - 基于数字键的对象数组的分组和总和

标签 javascript arrays reactjs victory-charts

我正在尝试创建一个统计饼图。作为 http 响应,我从服务器获取了一个列表,我需要使用它来绘制饼图。

例如:收到的数据:

[{1: 9, 2: 7}, {3:8, 2: 1}, {1:8, 5:9}, {2:3, 3:1}]

这是期望的输出:

[{x: 1, y: 17}, {x: 2, y:10}, {x: 3, y: 9}, {x: 5, y: 9}]

请注意:x 是键,y 是相似键值的总和

我试过 data.forEach((item, index) => {})。写完这篇文章后,我实际上对如何组合 Object.keys(item)Object.values(item)Object.values( item).reduce((a,b)=> 返回 a+b;)

这个问题听起来可能很愚蠢,但我们将不胜感激。 :)

最佳答案

你可以 reduce阵列。创建一个累加器对象,每个数字作为键,并使用 xy 键作为值。遍历每个对象并根据数字更新 y 值。然后使用 Object.values()在返回的对象上获取累加器的值作为数组

const input = [{1: 9, 2: 7}, {3:8, 2: 1}, {1:8, 5:9}, {2:3, 3:1}]

const grouped = input.reduce((acc, obj) => {
  for (const x in obj) {
    acc[x] = acc[x] || { x , y: 0 }
    acc[x].y += obj[x]
  }
  return acc;
}, {})

console.log(Object.values(grouped))

关于javascript - 基于数字键的对象数组的分组和总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56930544/

相关文章:

javascript - 许多 100% 高度/宽度 div - 旋转木马导航?

javascript - 是否有理由在高级编译中对私有(private)变量使用@type?

javascript - 在谷歌浏览器中,getBoundingClientRect().x 未定义

c++ - 如何创建 C 字符串数组?

Java排列3D map

javascript - 有没有一种方法可以在 React Native 的 .includes 中放入多个字符串?

javascript - 无法在 Safari 中捕获 window.open() 异常

C# 嵌套列表条目问题

reactjs - react 自定义钩子(Hook)内的 Apollo GraphQL 查询

javascript - 如何隐藏来自客户端的请求 react js网站