当前位置: 首页 > 知识库问答 >
问题:

获取json值的和

戚飞雨
2023-03-14

我有json值,我找到了特定列geo和salessale的匹配。同时,我希望接收pipelinevalue的和。我希望找到“pospension submitted”和“close won”的管道值的和作为tryfind.count.现在我得到了值o

null

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);

null

希望popeline值为773,000(nsu geo“提案提交”的总和)和13,45,000(nsu geo close won的总和)

共有3个答案

姜煌
2023-03-14

我可能会这样写:

null

const extract = data => Object.values (
  data .reduce ((a, {Geo, SalesStage, PipelineValue}) => {
    const key = Geo + '~' + SalesStage
    return {...a, [key]: {
      Geo,
      SalesStage,
      count: (((a[key] || {}).count) || 0) + 1,
      PipelineValue: ((a[key] || {}).PipelineValue || 0) + 
                     Number(PipelineValue.replace(/,/g, ''))
    }}
  }, {})
)

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"}]}}


console .log (extract (data .pipeline .data))
.as-console-wrapper {min-height: 100% !important; top: 0}
龚彬
2023-03-14

整件事分为两行:

const result = data.pipeline.data.reduce((acc,lead)=> 
               (acc+=+lead.PipelineValue.replace(/,/g,''),acc), 0);

好的,经过编辑,下面是不同geos和salesstages的总和:

null

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);
和选
2023-03-14

如果删除PipelineValue值中的逗号,就可以将这些字符串强制转换为数字。 如果无法在源代码中更改格式,可以在脚本中轻松完成:

js prettyprint-override">// Original line
PipelineValue=PipelineValue+lead.PipelineValue;

// Replace commas with nothing, then cast as number (using unary +)
PipelineValue=PipelineValue+(+lead.PipelineValue.replace(/,/g,''));
 类似资料:
  • 我希望在迭代的帮助下获得JSON对象键及其元素的各个值 我的json会像这样:-

  • 问题内容: 我有一个json文本,我想获取作者姓名和描述标签的值。不需要其他字段,例如url和urltoimage等。当我运行以下代码时,不提供任何字符串值。我认为这里有些错误。 怎么得到这个?下面是我的代码,它根本不起作用 上面的代码返回对象未设置为实例错误! 问题答案: 假设您希望反序列化为具体的类(按照问题中第二种尝试的方法),那么您需要一个包装器类来容纳整个对象,然后对此进行反序列化。 目

  • 问题内容: 我是JSON的新手。因此,如果这是一个非常基本的疑问,请不要责骂我。我有一个JSON对象参考,我想获取Key(对象只有一个“键值对”)。如何在Java中获得它? 问题答案: 您可以用来获取所有密钥。然后,您可以遍历密钥以从中获得第一个密钥,例如:

  • 问题内容: 假设我有这个JSON: 我正在尝试通过PHP: 我正在尝试获取成就的第一个“ id” 。 我该如何解决? 问题答案: 当您设置的第二个参数来,它会返回一个数组。 返回一个数组。

  • 我有一个名为AnimalsData的文件,它有一个由数组组成的对象。数组由一个对象和另一个数组组成。它看起来像这样: 我的HTML文件如下所示: 我正试图获取的值的类名对象从动画类数组。我一直在使用以下两个stackoverflow页面作为指南: 访问JSON数组中的对象和访问/处理(嵌套)对象、数组或JSON 我有另一个javascript文件,其中包含以下内容: 编辑我将for in循环中的"

  • 我得到的字符串值如下所示:

  • 问题内容: 我正在连接到第三方API,并获取了很长的JSON字符串。我只需要一个值,但是它位于层次结构的深处。有没有一种简单的方法就可以完成整个过程?我环顾四周,但似乎没有轻松的事情。 这是我的示例: 我一直在尝试使用Gson,以便可以将此斑点作为JsonObject。我确定有一些简单的东西,像这样: 或至少是这样的: 但是它似乎不存在。 那么,有没有可以让我做到这一点的解析器? 问题答案: 这是

  • 问题内容: 当我尝试从JSON字符串检索值时,它给了我一个错误: 但是,如果我遍历数据,它将为我提供元素(和),而不是值: 哪个返回: 我需要怎么做才能得到and 的值?(和) 问题答案: 如果要遍历字典的键和值,请执行以下操作: