如何解决如何在 Javascript 中操作集合?
我正在尝试从另一个 javascript 对象中获取一个对象。我已经编写了以下代码来分组:
function execute(args) {
const networkHospitals = args[0];
cummulatedArray = _.groupBy(networkHospitals,"cityName");
console.log(cummulatedArray);
}
{
Trichy: [
{
hospitalName: 'asd',address_1: 'Friday',}
]
}
但我想以这种格式返回数据:
{
"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'},hospitalName: "Hospital A3",address: 'adr A3'},{cityName: "B",hospitalName: "Hospital B1",address: 'adr B1'},{cityName: "C",hospitalName: "Hospital C1",address: 'adr C1'},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',hospitalName: 'Hospital A2'
},{
address: 'adr A3',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',hospitalName: 'Hospital C2'
}
]
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。