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支持,可以帮助您在线通知语法错误。哇,这太棒了!谢谢,我要试试这个!