如何操作 Javascript 中的集合?

How to manipulate a collection in Javascript?

我正在尝试从另一个 javascript 对象中获取一个对象。我写了下面的代码来分组:

function execute(args) {
  const networkHospitals = args[0];
  cummulatedArray = _.groupBy(networkHospitals, "cityName");
  console.log(cummulatedArray);
}

这是我从上面的代码中得到的示例输出:

{
  Trichy: [
    {
      hospitalName: 'asd',
      address_1: 'Friday',
    }
  ]
}

但我想return这种格式的数据:

{
  "key": "Tirchy",
  "value": [{
    "hospitalName": "asd",
    "address_1": "Friday"
  }],
}

这是输入数据:

"networkHospitals": 
[{
  "hospitalName": "abc",
  "address_1": "Friday",
  "cityName": "Trichy"
}],

如果您能指导我如何操作我得到的 JSON 数据,我将不胜感激。

cityName分组后,映射组,并为每个组创建一个对象。如果需要映射值,并从每个对象中省略 cityName 属性。

const networkHospitals = [{"hospitalName":"abc","address_1":"Friday","cityName":"Trichy"}]

const result = _.map(
  _.groupBy(networkHospitals, 'cityName'),
  (val, key) => ({
    key,
    value: val.map(o => _.omit(o, 'cityName'))
  })
)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

lodash是这样分组的,如果你想要不同的形状可以在最后做简单的变换

identity

collection = [
    {cityName: "A", hospitalName: "Hospital A1", address: 'adr A1'},
    {cityName: "A", hospitalName: "Hospital A2", address: 'adr A2'},
    {cityName: "A", hospitalName: "Hospital A3", address: 'adr A3'},
    {cityName: "B", hospitalName: "Hospital B1", address: 'adr B1'},
    {cityName: "C", hospitalName: "Hospital C1", address: 'adr C1'},
    {cityName: "C", hospitalName: "Hospital C2", address: 'adr C2'},
]
groupped = _.groupBy(collection, 'cityName')
console.log(Object.keys(groupped).map(
  cityName => ({key: cityName, value: groupped[cityName]})
));

它会给你这个:

[
  {
    key: 'A',
    value: [
      {
        address: 'adr A1',
        cityName: 'A',
        hospitalName: 'Hospital A1'
      },
      {
        address: 'adr A2',
        cityName: 'A',
        hospitalName: 'Hospital A2'
      },
      {
        address: 'adr A3',
        cityName: 'A',
        hospitalName: 'Hospital A3'
      }
    ]
  },
  {
    key: 'B',
    value: [
      {
        address: 'adr B1',
        cityName: 'B',
        hospitalName: 'Hospital B1'
      }
    ]
  },
  {
    key: 'C',
    value: [
      {
        address: 'adr C1',
        cityName: 'C',
        hospitalName: 'Hospital C1'
      },
      {
        address: 'adr C2',
        cityName: 'C',
        hospitalName: 'Hospital C2'
      }
    ]
  }
]