【发布时间】:2020-03-19 11:11:22
【问题描述】:
我的数组是:
[{
"Id": 1891,
"AirportCode": "DUB",
"AirportName": "Dublin Airport",
"AirportCity": "Dublin",
"Priority": 1,
"SubPriority": 0
},
{
"Id": 1921,
"AirportCode": "DXB",
"AirportName": "Dubai International Airport",
"AirportCity": "Dubai",
"Priority": 1,
"SubPriority": 0
},
{
"Id": 1680,
"AirportCode": "DBN",
"AirportName": "Dublin Municipal Airport",
"AirportCity": "Dublin",
"Priority": 2,
"SubPriority": 1
},
{
"Id": 8973,
"AirportCode": "XNB",
"AirportName": "United Arab Emirates - Bus Station",
"AirportCity": "Dubai",
"Priority": 2,
"SubPriority": 1
},
{
"Id": 6062,
"AirportCode": "PSK",
"AirportName": "New River Valley Airport",
"AirportCity": "Dublin",
"Priority": 3,
"SubPriority": 1
},
{
"Id": 1681,
"AirportCode": "DBO",
"AirportName": "Dubbo Airport",
"AirportCity": "Dubbo",
"Priority": 99,
"SubPriority": null
}
]
我希望它像 -
我写了如下函数,因为 AirportCity 是一样的,SubPriority 不为空
const customAirports = [];
myArray.map((val, i, arr) => {
let pushedInSubAirport = false;
for (let v of customAirports) {
if (v.AirportCity === (val.SubPriority ?
val.AirportCity : undefined)
) {
if (!v['SubAirport'])
Object.assign(v, { SubAirport: [] })
v['SubAirport'].push(val);
pushedInSubAirport = true;
break;
}
}
if (!pushedInSubAirport)
customAirports.push(val)
});
myArray = customAirports;
如果不合适,请给我建议解决方案。
【问题讨论】:
-
转换规则是什么?
标签: javascript arrays json angular typescript