React/Typescript多Map

eimct9ow  于 2023-02-13  发布在  TypeScript
关注(0)|答案(2)|浏览(99)

我刚接触typescript,不知道如何实现一个multimap。我有如下代码。我需要迭代itemArray并根据日期存储Item。我需要使用日期作为multimap的键。如何在不使用任何外部库的情况下实现它?

interface Item {
    id: number;
    date: string;
}

interface Details{
    itemArray: Item[]
}
osh3o9ms

osh3o9ms1#

有两种方法可以实现这一点,Map s和可索引类型。

可索引类型

可索引类型是键和值已类型化的基本对象。

interface ItemMap {
    [key: string]: Item[];
};

Playground

Map

Map是一个实现散列Map的JS类--当使用非字符串/数字类型进行索引时,这个方法很有用。

type ItemMap = Map<string, Item[]>

Playground

nwwlzxa7

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');
}

相关问题