reactjs - React/Typescript 多重映射
我刚接触 TypeScript,不知道如何实现 multimap。我有如下代码。我需要遍历 itemArray,并根据日期存储 Item。我需要使用日期作为 multimap 的键。如何在不使用任何外部库的情况下实现这一点?
interface Item {
id: number;
date: string;
}
interface Details{
itemArray: Item[]
}
答案#1
有两种方法可以实现这一点,Map 和可索引类型。
可索引类型
可索引类型是其键和值都有类型的基本对象。
interface ItemMap {
[key: string]: Item[];
};
操场
地图
Maps 是一个实现哈希映射的 JS 类——当按非字符串/数字类型索引时,这种方法非常有用。
type ItemMap = Map<string, Item[]>
操场
答案#2
一些软件包提供多映射类,但我发现这个足够用于我的任务:
type MultiMap<KEY, VALUE> = Map<KEY, Array<VALUE>>;
function mmAdd<KEY, VALUE>(mm: MultiMap<KEY, VALUE>, key: KEY, value: VALUE) {
const values = mm.get(key);
if (values === undefined) {
mm.set(key, [value]);
} else {
values.push(value);
}
}
function usage() {
const mmap: MultiMap<string, string> = new Map();
mmAdd(mmap, 'key1', 'value1');
mmAdd(mmap, 'key1', 'value2');
mmAdd(mmap, 'key2', 'value3');
}
