我刚接触typescript,不知道如何实现一个multimap。我有如下代码。我需要迭代itemArray并根据日期存储Item。我需要使用日期作为multimap的键。如何在不使用任何外部库的情况下实现它?
interface Item { id: number; date: string; } interface Details{ itemArray: Item[] }
osh3o9ms1#
有两种方法可以实现这一点,Map s和可索引类型。
Map
可索引类型是键和值已类型化的基本对象。
interface ItemMap { [key: string]: Item[]; };
Playground
Map是一个实现散列Map的JS类--当使用非字符串/数字类型进行索引时,这个方法很有用。
type ItemMap = Map<string, Item[]>
nwwlzxa72#
有些包提供了multimap类,但我发现这足以完成我的任务:
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'); }
2条答案
按热度按时间osh3o9ms1#
有两种方法可以实现这一点,
Map
s和可索引类型。可索引类型
可索引类型是键和值已类型化的基本对象。
Playground
Map
Map是一个实现散列Map的JS类--当使用非字符串/数字类型进行索引时,这个方法很有用。
Playground
nwwlzxa72#
有些包提供了multimap类,但我发现这足以完成我的任务: