Typescript 如何将两本词典合并为一本

Typescript 如何将两本词典合并为一本,typescript,Typescript,我有一系列字典,其中包含有关应用程序版本的信息: appsVersion = [ {"adroid_version": 0.0.150, "ios_version": 0.0.150}, {"adroid_version": 0.0.150, "ios_version": 0.0.151}, {"adroid_vers

我有一系列字典,其中包含有关应用程序版本的信息:

appsVersion = [
               {"adroid_version": 0.0.150, "ios_version": 0.0.150},
               {"adroid_version": 0.0.150, "ios_version": 0.0.151},
               {"adroid_version": 0.0.162, "ios_version": 0.0.152},
               {"adroid_version": 0.0.162, "ios_version": 0.0.152}
               ]
我的目标是通过以下方式汇总这些数据:

aggregatedData = {
"version 0.0.150": {"android_version": 2, "ios_version": 1},
 "version 0.0.151": {"android_version": 0, "ios_version": 1},
 "version 0.0.152": {"android_version": 0, "ios_version": 2},
 "version 0.0.162": {"android_version": 2, "ios_version": 0},
}
你能帮我处理一下这些数据吗?我在打字


谢谢大家!

下面是一个使用完整版本的TypeScript语法的示例:

function aggregateData(
    appVersions: { android_version: string, ios_version: string }[]
): {
    // Declare the output type of the function
    [version: string]: {
        android_version_count: number;
        ios_version_count: number;
    }
} {
    // Declare and initialize an object we will be populating
    let aggregatedDataOutput: {
        [version: string]: {
            android_version_count: number;
            ios_version_count: number;
        }
    } = {};
    // Both initializes a version entry and creates a new one if one doesn't exist
    function getVersion(version: string) {
        let versionObj = aggregatedDataOutput[version];
        if(versionObj === undefined) {
            versionObj = {
                android_version_count: 0,
                ios_version_count: 0,
            };
            aggregatedDataOutput[version] = versionObj;
        }
        return versionObj;
    }
    
    // Add all app versions to aggregated data
    for(let appVersion of appVersions) {
        getVersion(appVersion.android_version).android_version_count++;
        getVersion(appVersion.ios_version).ios_version_count++;
    }

    // Additionally, sort by key (version)
    let aggregateEntries = Object.entries(aggregatedDataOutput);
    aggregateEntries.sort((a, b) => {
        if(a[0] < b[0]) {
            return -1;
        }
        if(a[0] > b[0]) {
            return +1;
        }
        return 0;
    });

    aggregatedDataOutput = {};
    for(let [key, value] of aggregateEntries) {
        aggregatedDataOutput[key] = value;
    }

    return aggregatedDataOutput;
}

let appsVersion = [
    {"android_version": "0.0.150", "ios_version": "0.0.150"},
    {"android_version": "0.0.150", "ios_version": "0.0.151"},
    {"android_version": "0.0.162", "ios_version": "0.0.152"},
    {"android_version": "0.0.162", "ios_version": "0.0.152"}
];

console.log(aggregateData(appsVersion));
函数聚合数据(
appVersions:{android_版本:string,ios_版本:string}[]
): {
//声明函数的输出类型
[版本:字符串]:{
android_版本_计数:数字;
ios\u版本\u计数:数字;
}
} {
//声明并初始化我们将填充的对象
让aggregatedDataOutput:{
[版本:字符串]:{
android_版本_计数:数字;
ios\u版本\u计数:数字;
}
} = {};
//两者都初始化一个版本条目,如果不存在,则创建一个新的版本条目
函数getVersion(版本:string){
设versionObj=aggregatedDataOutput[version];
if(versionObj==未定义){
versionObj={
android_版本_计数:0,
ios\u版本\u计数:0,
};
aggregatedDataOutput[version]=versionObj;
}
返回versionObj;
}
//将所有应用程序版本添加到聚合数据
for(让appVersions的appVersion){
getVersion(appVersion.android_version).android_version_count++;
getVersion(appVersion.ios_version).ios_version_count++;
}
//此外,按键排序(版本)
让aggregateEntries=Object.entries(AggregateDataOutput);
aggregateEntries.sort((a,b)=>{
if(a[0]b[0]){
返回+1;
}
返回0;
});
aggregatedDataOutput={};
for(让aggregateEntries的[键,值]为){
aggregatedDataOutput[键]=值;
}
返回聚合数据输出;
}
设appsVersion=[
{“android\u version”:“0.0.150”,“ios\u version”:“0.0.150”},
{“android_版本”:“0.0.150”,“ios_版本”:“0.0.151”},
{“android_版本”:“0.0.162”,“ios_版本”:“0.0.152”},
{“android_版本”:“0.0.162”,“ios_版本”:“0.0.152”}
];
log(aggregateData(appsVersion));
如果有什么地方让人困惑,请告诉我。如果TypeScript语法令人困惑,您可能需要阅读一些TypeScript教程,它们比我解释的更好。我推荐


此外,如果您完全不熟悉TypeScript,您可能会发现此页面很有用:。我不确定您使用的是哪种编辑器,但是VS代码有很好的TypeScript支持,可以帮助您在线通知语法错误。

哇,这太棒了!谢谢,我要试试这个!