Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于数字键的对象数组的组和和和_Javascript_Arrays_Reactjs_Victory Charts - Fatal编程技术网

Javascript 基于数字键的对象数组的组和和和

Javascript 基于数字键的对象数组的组和和和,javascript,arrays,reactjs,victory-charts,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((项,索引)=>{})。写了这篇文章之后,我实际上没有得到关于如何组合O

我正在尝试创建一个统计饼图。作为一个
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((项,索引)=>{})
。写了这篇文章之后,我实际上没有得到关于如何组合
Object.keys(item)
Object.values(item)
Object.values(item).reduce((a,b)=>返回a+b;)

这个问题听起来可能很傻,但如果有任何帮助,我们将不胜感激。:)

您可以使用数组。创建一个累加器对象,每个数字作为键,对象的值为
x
y
键。循环遍历每个对象,并根据编号更新
y
值。然后在返回的对象上使用以获取作为数组的累加器值

const input=[{1:9,2:7},{3:8,2:1},{1:8,5:9},{2:3,3:1}]
常量分组=输入。减少((acc,obj)=>{
用于(obj中的常数x){
acc[x]=acc[x]|{x,y:0}
acc[x].y+=obj[x]
}
返回acc;
}, {})

console.log(Object.values(grouped))
您可以查找相同的键并更新或插入新对象

这种方法不会改变键的顺序

var data=[{1:9,2:7},{3:8,2:1},{1:8,5:9},{2:3,3:1}],
结果=数据。减少((r,o)=>{
Object.entries(o.forEach)([x,y])=>{
var temp=r.find(o=>o.x==x);
如果(温度)温度y+=y;
else r.push({x,y});
});        
返回r;
}, []);
控制台日志(结果)
.as console wrapper{max height:100%!important;top:0;}
@Andreas,
data.forEach((item,index)=>{})
在写了这篇文章之后,我实际上没有得到关于如何组合
对象.键(item)
对象.值(item)
对象.值(item).reduce((a,b)=>返回a+b;)
否则我会发帖的。