我必須用這種奇妙的語言(javascript)來操作資料。在那之前,我設法自己實作了我需要的東西,但我在那里達到了我的極限。
很難解釋我的資料是如何構建的,所以讓我們創建一個模式。這就是我所擁有的:
obj: {[key: string]: {name: string, type: string}[]} =
{
"animals": [
{name: "Louis", type: "dog"},
{name: "John", type: "cat"},
{name: "Jordan", type: "dog"},
]
"cars" : [
{name: "alpha", type: "ferrari"},
{name: "beta", type: "ferrari"},
{name: "charlie", type: "mercedes"},
]
}
我試圖實作的是對每個物件,按型別對串列中的物件進行分組。這看起來像這樣:
obj: {[key: string]: {[key: string]: {name: string, type: string}[]}} =
{
"animals": {
"dog": [
{name: "Louis", type: "dog"},
{name: "Jordan", type: "dog"},
],
"cat": [
{name: "John", type: "cat"},
]
}
"cars" : {
"ferrari": [
{name: "alpha", type: "ferrari"},
{name: "beta", type: "ferrari"},
],
"mercedes": [
{name: "charlie", type: "mercedes"},
]
}
}
你知道如何實作這一目標嗎?
uj5u.com熱心網友回復:
我認為您正在尋找以下內容(因為您的問題標題中有 TypeScript):
interface Value {
name: string;
type: string;
}
type Categorized = {
[index: string]: Record<string, Value[]>;
};
const results = Object.entries(obj).reduce<Categorized>((mapping, [key, values]) => {
const group: Record<string, Value[]> = {};
for (const value of values) {
if (group[value.type] === undefined) {
group[value.type] = [value];
} else {
group[value.type].push(value);
}
}
return {
...mapping,
[key]: group,
};
}, {});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/366073.html
標籤:javascript json 打字稿 数据结构 结构体
