2012-07-04 19 views
8

Multimap to struktura danych mapująca klucz do listy/zestawu wartości.Czy istnieje odpowiednik struktury danych Multimap w javascript?

Czy istnieje dobra, dyskretna biblioteka js, która implementuje tę strukturę danych?

Edit - Wiem, że można go wdrożyć „łatwo” się, ale wierzę, że mając go jako samodzielny abstrakcji jest dobrą rzeczą, więc odpowiedzi na to pytanie nie powinno być „po prostu realizować to sam”.

+5

Obiekt z tablicami jako wartościami? – Esailija

+0

+ Toss w [Underscore.js] (http://underscorejs.org/), i jesteś dobry, aby przejść! – Svend

+0

@Eailailija, w Javie możesz użyć 'Map >', ale ktoś oczywiście myślał, że multimap jest na tyle ważny, że koduje go w Javie. Dlaczego nie JS? http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html – ripper234

Odpowiedz

2

Ponieważ @Esailija opublikowała to jako komentarz, przekażę go jako możliwą odpowiedź. Obiekty korzystające z tablic jako wartości to sposób na zrobienie i manipulowanie wartościami za pomocą Underscore.js.

var map = { 
    foo: [1, 2, 3], 
    bar: ['1', '2', '3'] 
}; 

map.foo = _.union(map.foo, [1, 4]); // map.foo -> [1, 2, 3, 4] 

Choć to oczywiście zależy od Twoich potrzeb, takie podejście daje ogólne struktury danych, które idzie wszędzie i bibliotekę, która działa bardzo ładnie ze zbiorów i list. Dla większości celów wydajność tego podejścia powinna być po prostu dobra (po prostu nie rób tego miliony razy na sekundę).

+0

Zobacz mój komentarz: możliwość zaimplementowania go przy użyciu listy i tablicy nie jest wymówką, aby nie mieć "wielopunktowej" klasy "idź do". Oczywiście, mógłbym użyć tego zamiast pisać jeden od zera, ale jeśli biblioteka, z której już korzystałem (na przykład jQuery) miała klasę multimap, wolałbym ją używać niż samemu grać z tablicami. – ripper234