reactjs - React/Typescript multimap
Novi sam u TypeScriptu i ne mogu shvatiti kako implementirati multimapu. Imam kod kao dolje. Trebam proći kroz itemArray i pohraniti Item prema datumu. Trebam koristiti datum kao ključ za multimapu. Kako to implementirati bez korištenja bilo kakvih vanjskih biblioteka?
interface Item {
id: number;
date: string;
}
interface Details{
itemArray: Item[]
}
Odgovor #1
Postoje dva načina za postizanje ovoga, Mapovi i indekse tipovi.
Indeksibilni tipovi
Indeksibilne vrste su osnovni objekti čiji su ključevi i vrijednosti tipizirani.
interface ItemMap {
[key: string]: Item[];
};
Igralište
Karte
Mape su JS klasa koja implementira hash mapu - Ova metoda je korisna kada se indeksira pomoću tipova koji nisu string/number.
type ItemMap = Map<string, Item[]>
Igralište
Odgovor #2
Neki paketi nude klase multimap-a, ali ovo mi je bilo dovoljno za moj zadatak:
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');
}
