目标数据,根据标签名称字段使用JS把标签名称相同的字段值累加求平均值。
{标签名称: '40010', 值: 140}
{标签名称: '40010', 值: 160}
{标签名称: '40010', 值: 150}
{标签名称: '40012', 值: 40}
{标签名称: '40012', 值: 50}
{标签名称: '40012', 值: 60}
{标签名称: '40014', 值: 70}
{标签名称: '40014', 值: 80}
{标签名称: '40014', 值: 90}
{标签名称: '40016', 值: 110}
{标签名称: '40016', 值: 120}
{标签名称: '40016', 值: 130}
期望数据
{标签名称: '40010', 值: 150}
{标签名称: '40012', 值: 50}
{标签名称: '40014', 值: 80}
{标签名称: '40016', 值: 120}
处理代码,使用reduce方法处理
const reduced = tem.reduce(function(m, d){
if(!m[d.标签名称]){
m[d.标签名称] = {...d, count: 1};
return m;
}
m[d.标签名称].值 += d.值;
m[d.标签名称].count += 1;
return m;
},{});
const r = Object.keys(reduced).map(function(k){
const item = reduced[k];
return {
标签名称: item.标签名称,
值: item.值/item.count,
}
})