javascript - 得到json值的总和
问题描述
我有 json 值,我找到了特定列 geo 和 salessale 的匹配。除此之外,我想接收 pipelinevalue 的总和。我想将“Proposal Submitted”和“close won”的管道值总和作为 tryFind。计数。现在我得到了价值 o
const data ={
"pipeline":{
"data":[
{
"UserName":"Jaison Clinton",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"3,54,000"
},
{
"UserName":"Jaison Clinton",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"3,49,000"
},
{
"UserName":"Kaviarasan Selvaraj",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"70,000"
},
{
"UserName":"Vivek Sharma",
"Geo":"NSU",
"SalesStage":"close won",
"PipelineValue":"13,45,000"
}
]
}
};
const result = data.pipeline.data.reduce((acc, lead) => {
const tryFind = acc.find(l => l.Geo === lead.Geo && l.SalesStage === lead.SalesStage);
var PipelineValue=0;
if (tryFind) {
tryFind.count++;
PipelineValue=PipelineValue+lead.PipelineValue;
} else {
acc.push({ Geo: lead.Geo, SalesStage: lead.SalesStage, count: 1 ,PipelineValue:PipelineValue});
}
return acc;
}, []);
console.log(result);
希望 popeline 值为 773,000(nsu geo '提案提交'的总和)和 13,45,000(nsu geo close won的总和)
解决方案
整个事情分为两行:
const result = data.pipeline.data.reduce((acc,lead)=>
(acc+=+lead.PipelineValue.replace(/,/g,''),acc), 0);
好的,已编辑,现在这是不同Geo
s 和SalesStage
s 的总和:
const data ={
"pipeline":{
"data":[
{
"UserName":"Jaison Clinton",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"3,54,000"
},
{
"UserName":"Jaison Clinton",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"3,49,000"
},
{
"UserName":"Kaviarasan Selvaraj",
"Geo":"NSU",
"SalesStage":"Proposal Submitted",
"PipelineValue":"70,000"
},
{
"UserName":"Vivek Sharma",
"Geo":"NSU",
"SalesStage":"close won",
"PipelineValue":"13,45,000"
}
]
}
};
const result = Object.entries(data.pipeline.data.reduce((acc,cur) => {
let k=cur.Geo+'|'+cur.SalesStage;
(acc[k]=acc[k] || []).push(+cur.PipelineValue.replace(/,/g,''))
return acc}, {}))
.map(e=>{
let k=e[0].split('|');
return {Geo:k[0],SalesStage:k[1],count:e[1].length,PipelineValue:e[1].reduce((a,c)=>a+c)}
});
console.log(result);
我首先使用 PipelineValues 收集单个数组,在最后.reduce()
一部分中我得到它们的长度并将它们相加。
推荐阅读
- reactjs - 将 React HTTP 流量重定向到 HTTPS GCP
- python - 输出字符串的元音和辅音(没有导入或 for/while 循环)
- java - 如何停止另一个班级的连续声音循环?
- shell - shellscript:读取 csv 并打印为字符串无法按预期工作
- amazon-web-services - AWS SNS 是否有死信队列?
- spss - SPSS中的转置(CaseToVars)和用现有变量重命名变量
- mysql - 使用索引时 MySQL 查询变慢
- php - 通过用户 ID 从数据库获取帖子 - PHP PDO
- javascript - 我需要最简单的方法来使用数据表(或其他表包)调整 R 中的列宽
- javascript - 从 JavaScript 对象和数组创建 JSON 文件