
こんなJsonがあったとする
const food: GroupedFood[] = [
{
group: "ご飯",
detail: [
{
date: "2024",
name: "お米",
},
{
date: "2023",
name: "ラーメン",
},
]
},
{
group: "デザート",
detail: [
{
date: "2024",
name: "ケーキ",
},
{
date: "2023",
name: "アイス",
},
]
},
];
型
interface Detail {
date: string;
name: string;
}
interface GroupedFood {
group: string;
detail: Detail[];
}
interface FlattenedFood {
group: string;
date: string;
name: string;
}
flatMapとmap
groupのkey-valueをdetailの中の値として変換したい場合は、
flatMap
とmap
を使用して、グループ化されたデータをフラット化し、各詳細情報を個別のオブジェクトとして新しい配列に変換します。これにより、指定された変換が効率的に実行されます。
const transformFoodData = (groupedFood: GroupedFood[]): FlattenedFood[] => {
return groupedFood.flatMap(group =>
group.detail.map(detail => ({
group: group.group,
date: detail.date,
name: detail.name
}))
);
};
// 変換処理の実行
const transformedFood = transformFoodData(food);
console.log(transformedFood);
実行結果
[
{
"group": "ご飯",
"date": "2024",
"name": "お米"
},
{
"group": "ご飯",
"date": "2023",
"name": "ラーメン"
},
{
"group": "デザート",
"date": "2024",
"name": "ケーキ"
},
{
"group": "デザート",
"date": "2023",
"name": "アイス"
}
]