📅  最后修改于: 2023-12-03 14:53:40.520000             🧑  作者: Mango
在 TypeScript 中,可以使用对象数组来创建一个包含公共键作为属性的新数组。这在处理数据时非常有用,特别是在与数据库或 API 交互时。
为了创建一个使用公共键作为属性的对象数组,需要遵循以下步骤:
下面是一个示例函数,它使用上述步骤创建具有公共键的对象数组:
function createCommonKeyArray<T>(array: T[], commonKey: keyof T): { [key: string]: any[] }[] {
// Find all unique keys
const keys: string[] = Array.from(new Set(array.map((item: T) => item[commonKey])));
// Create new object for each key
const result = keys.map((key: string) => ({ [commonKey]: key, [commonKey + 'Values']: [] }));
// Add values to corresponding arrays
array.forEach(item => {
const index = result.findIndex(resultItem => resultItem[commonKey] === item[commonKey]);
result[index][commonKey + 'Values'].push(item);
});
return result;
}
在上面的示例中,我们首先找到对象数组中的所有不同键(在本例中为 commonKey),并创建一个新数组来存储所有键和对应值的数组。然后我们遍历原始数组并附加每个对象的值到相应的键数组。最后,我们返回新数组作为结果。
这是一个使用上述函数创建具有公共键的对象数组的示例:
interface Item {
id: number;
category: string;
name: string;
}
const data: Item[] = [
{ id: 1, category: 'fruit', name: 'apple' },
{ id: 2, category: 'vegetable', name: 'carrot' },
{ id: 3, category: 'fruit', name: 'orange' },
{ id: 4, category: 'vegetable', name: 'potato' },
{ id: 5, category: 'fruit', name: 'banana' },
];
const result = createCommonKeyArray(data, 'category');
console.log(result);
这将创建具有以下格式的输出:
[
{ category: 'fruit', categoryValues: [ { id: 1, category: 'fruit', name: 'apple' }, { id: 3, category: 'fruit', name: 'orange' }, { id: 5, category: 'fruit', name: 'banana' } ] },
{ category: 'vegetable', categoryValues: [ { id: 2, category: 'vegetable', name: 'carrot' }, { id: 4, category: 'vegetable', name: 'potato' } ] }
]
在上面的示例中,我们使用一个包含不同种类的食物的对象数组。我们为类别键调用 createCommonKeyArray 函数,并以 'category' 作为公共键。函数返回一个数组,其中每个对象都包含类别(fruit 或 vegetable)和所有属于该类别的食品的数组。
如需详细了解 TypeScript 中的对象数组,请参阅官方文档:https://www.typescriptlang.org/docs/handbook/objects.html#object-types