如何使用typescript在每个分组数组中获取第一条记录



我有一个数组,我要做的是我需要分组,需要得到每组中的第一个元素到一个数组。我设法做分组部分,并努力做第二部分,有人可以帮助我做这个。

下面是我尝试的,

this.faresDataAirlineGroup = this.faresData.reduce(function (r, a) {
r[a.AirCode] = r[a.AirCode] || [];
r[a.AirCode].push(a);
return r;
}, Object.create(null));

示例Json

[
{
"RfNo": "500",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "AF"
},
{
"RfNo": "502",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "DD"
},
{
"RfNo": "501",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "DD"
},
{
"RfNo": "503",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "AF"
}
]

将json,

[
{
"RfNo": "500",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "AF"
},
{
"RfNo": "502",
"ABaseFare": "110",
"ATax": "267.22",
"YBaseFare": "0",
"AirCode": "DD"
}
]

假设obj作为数组对象

将对象分组的函数

const groupByKey = (list: any[], key: string, {omitKey = false}: { omitKey: true; }) => list.reduce((hash, {[key]: value, ...rest}) => ({
...hash, [value]: (hash[value] || []).concat(omitKey ? {...rest} : {...rest})
}), {});
const groupByKey1 = groupByKey(obj, 'AirCode', {omitKey: true});
const x: any[] = [];
Object.entries(groupByKey1).forEach(
([key, value]) => x.push(value)
);
const z: { ABaseFare: any; ATax: any; RfNo: any; YBaseFare: any; }[] = [];
x.forEach(value => {
const p = {
ABaseFare: value[0].ABaseFare,
ATax: value[0].ATax,
RfNo: value[0].RfNo,
YBaseFare: value[0].YBaseFare,
};
z.push(p);
});
console.log(z);

最新更新