使用TypeScript多次分组到对象中可以通过以下步骤实现:
以下是一个示例代码,演示如何使用TypeScript进行多次分组到对象中:
interface GroupedData {
[key: string]: {
[key: string]: any[];
};
}
function groupByMultiple(data: any[], groupBy: string[] | ((item: any) => string)): GroupedData {
const groupedData: GroupedData = {};
data.forEach(item => {
let currentGroup = groupedData;
if (typeof groupBy === 'function') {
const key = groupBy(item);
if (!currentGroup[key]) {
currentGroup[key] = {};
}
currentGroup = currentGroup[key];
} else {
groupBy.forEach(key => {
const value = item[key];
if (!currentGroup[value]) {
currentGroup[value] = {};
}
currentGroup = currentGroup[value];
});
}
if (!currentGroup.items) {
currentGroup.items = [];
}
currentGroup.items.push(item);
});
return groupedData;
}
// 示例数据
const data = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'London' },
{ name: 'Charlie', age: 25, city: 'New York' },
{ name: 'Dave', age: 35, city: 'London' },
];
// 按照年龄和城市进行分组
const groupedData = groupByMultiple(data, ['age', 'city']);
console.log(groupedData);
在上述示例中,我们定义了一个groupByMultiple
函数,它接受一个数据数组和一个用于分组的属性数组或函数。函数内部使用了一个嵌套的对象来存储分组结果,最终返回该对象。
在示例中,我们使用groupByMultiple
函数将示例数据按照年龄和城市进行了分组。最终的分组结果如下所示:
{
"25": {
"New York": {
"items": [
{ "name": "Alice", "age": 25, "city": "New York" },
{ "name": "Charlie", "age": 25, "city": "New York" }
]
}
},
"30": {
"London": {
"items": [
{ "name": "Bob", "age": 30, "city": "London" }
]
}
},
"35": {
"London": {
"items": [
{ "name": "Dave", "age": 35, "city": "London" }
]
}
}
}
这个示例展示了如何使用TypeScript进行多次分组到对象中的操作。根据具体的需求,你可以根据不同的属性或条件进行分组,并对分组结果进行进一步的处理和操作。
领取专属 10元无门槛券
手把手带您无忧上云