javascript - 使用 lodash 进行数据格式化

标签 javascript json lodash postgresql-9.2

假设我有以下 json 数组:

const input = [
  { "tx_type": "215", "dos": "2019-05-02", "payer": "Cigna", "count": 23 },
  { "tx_type": "215", "dos": "2019-05-02", "payer": "SENIORCARE Plus", "count": 75 },
  { "tx_type": "217", "dos": "2019-05-02", "payer": "Aetna", "count": 2 },
  { "tx_type": "215", "dos": "2019-05-03", "payer": "Aetna", "count": 85 },
  { "tx_type": "215", "dos": "2019-05-03", "payer": "TRICARE", "count": 1 },
  { "tx_type": "215", "dos": "2019-05-03", "payer": "Aetna", "count": 5 },
  { "tx_type": "215", "dos": "2019-05-03", "payer": "Cigna", "count": 11 }
]

它来自 postgres 9.2 db,但我正在尝试将数据放入 dataviz 中,该数据预计如下所示:

[
  {
    "tx_type": "x215",
    "dos": [
      { "date": "2019-05-02", "SENIORCARE Plus": 75, "Cigna": 23 },
      { "date": "2019-05-03", "Aetna": 96, "TRICARE": 1, "Cigna": 11 }
    ],
  },
  {
    "tx_type": "x215",
    "dos": [
      { "date": "2019-05-02", "Aetna": 2 }
    ]
  }
]

我尝试使用 lodash 使用 .groupBy("tx_type") 以及 _.chain(input).nest("tx_type") 按 tx_type 对对象进行分组。 groupBy("dos").value(),以及按 tx_type 过滤,然后尝试分组/嵌套...

实际上,我想做的就是按 tx_type 进行过滤,并按日期对付款人和计数进行分组。

任何意见都将不胜感激。尽管我想升级到较新版本的 postgres,但这并不是一个真正的选择..

最佳答案

tx_type分组并映射组。要创建 dos 属性,请映射组中的项目,按 dos 对它们进行分组,映射结果以将每一行转换为 { data, [ payer]:count },并合并对象:

const input = [{"tx_type":"215","dos":"2019-05-02","payer":"Cigna","count":23},{"tx_type":"215","dos":"2019-05-02","payer":"SENIORCARE Plus","count":75},{"tx_type":"217","dos":"2019-05-02","payer":"Aetna","count":2},{"tx_type":"215","dos":"2019-05-03","payer":"Aetna","count":85},{"tx_type":"215","dos":"2019-05-03","payer":"TRICARE","count":1},{"tx_type":"215","dos":"2019-05-03","payer":"Aetna","count":5},{"tx_type":"215","dos":"2019-05-03","payer":"Cigna","count":11}]

const result = _(input)
  .groupBy('tx_type')
  .map((dos, tx_type) => ({
    tx_type,
    dos: _(dos)
      .groupBy('dos')
      .map((g, date) => _.merge({}, 
        ..._.map(g, ({ payer, count }) => ({ date,  [payer]: count }))
      ))
      .value()
  }))
  .value()
  
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash-compat/3.10.2/lodash.js"></script>

关于javascript - 使用 lodash 进行数据格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526325/

相关文章:

javascript - 如何使用语义 UI react 打开多个 Accordion ?

javascript - 如何编写 GUI 选择框代码?

JavaScript 持续检查一个变量

javascript - 使用 `react-bootstrap` 和 `npm`

c# - RESTful Swift json解析问题

javascript - 将 Joi 与 Hapi 一起使用时,如何设置需要一个键但允许任何和所有其他键?

javascript - JS 和 jQuery,函数完成时全局对象变空

javascript - 取一个数组并用翻转的索引/值制作一个对象

javascript - 在 Vue 中使用 lodash throttle 时传递这个

javascript - 使用 lodash 过滤对象数组中的对象