typescript - 打字稿映射和/或减少:将数组映射到其他数组类型
问题描述
我需要映射一个Array<Quote>
,其中Quote
是:
export interface Quote {
readonly chronoUnit: Quote.ChronoUnitEnum;
readonly downloadedDocs: number;
readonly downloadedKb: number;
readonly uploadedKb: number;
readonly uploadedRefs: number;
}
export namespace Quote {
export type ChronoUnitEnum = 'HOUR' | 'DAY' | 'MONTH' | 'YEAR';
export const ChronoUnitEnum = {
HOUR: 'HOUR' as ChronoUnitEnum,
DAY: 'DAY' as ChronoUnitEnum,
MONTH: 'MONTH' as ChronoUnitEnum,
YEAR: 'YEAR' as ChronoUnitEnum
};
}
到一个Array<AlignedQuote>
:
export interface AlignedQuote {
readonly alignedType: AlignedQuote.AlignedEnum;
readonly hour: number;
readonly day: number;
readonly month: number;
readonly year: number;
}
export namespace AlignedQuote {
export type AlignedEnum = 'DOWNLOADEDDOCS' | 'DOWNLOADEDKB' | 'UPLOADEDKB' | 'UPLOADEDREFS';
export const AlignedEnum = {
HOUR: 'DOWNLOADEDDOCS' as AlignedEnum,
DAY: 'DOWNLOADEDKB' as AlignedEnum,
MONTH: 'UPLOADEDKB' as AlignedEnum,
YEAR: 'UPLOADEDREFS' as AlignedEnum
};
}
我正在考虑使用任何一种map
,但我不太清楚如何使用。
let quotes: Array<Quote>;
let alignedQuotes: Array<AlignedQuotes> = quotes.map(???).reduce(????);
例子:
quotes: [{
chronoUnit:ChronoUnit.HOUR,
downloadedDocs:1,
downloadedKb:23,
uploadedKb:65,
uploadedRefs:7
}];
alignedQuotes: [
{alignedType: AlignedQuote.AlignedEnum.DOWNLOADEDDOCS, hour: 1, day: null, month: null, year: null},
{alignedType: AlignedQuote.AlignedEnum.DOWNLOADEDKBS, hour: 23, day: null, month: null, year: null},
{alignedType: AlignedQuote.AlignedEnum.UPLOADEDKBS, hour: 65, day: null, month: null, year: null},
{alignedType: AlignedQuote.AlignedEnum.UPLOADEDREFS, hour: 7, day: null, month: null, year: null}
]
有任何想法吗?
解决方案
我不确定您的两个对象究竟是如何相关的,但您可以在此处查看 Array.Map() 如何与基本示例一起使用。这是一个函数,你可以在括号内做任何你需要的事情
您的情况的可能解决方案:
let alignedQuotes: Array<AlignedQuotes> = quotes.map(quote => <AlignedQuotes>{
hour: quote.downloadedDocs,
day: null,
month: null,
year: null
});
quote
这是单个 Quote obj(.map 遍历所有这些),您可以在需要时使用他的属性,例如“小时”示例。
推荐阅读
- javascript - 如何制作渐变填充样式
- python - TensorFlow - Jupyter Lab - 加载原生 TensorFlow 运行时失败
- python - 如何将 CNN 中的 k 个通道用于 k 个 FC 层
- python - 如何在 pandas Dataframe barplot 中仅更改 xticks 字体大小?
- android - Android Room 数据库:OnConflictStrategy.ABORT 与 IGNORE 之间的区别
- python - 使用 patch_namespaced_deployment 从部署中删除卷不起作用
- python - Flask-sqlalchemy 按 unix 间隔过滤
- c++ - Win32 小堆栈大小的奇怪行为
- python - 当检查返回 false 时,如何停止 channel.purge 的限制减少?
- c - 定义不透明指针时防止不完整的类型声明?