2016-01-25 17 views
5

Chcę utworzyć niezmienny zbiór ścieżek. Ścieżka, w moim przypadku, jest po prostu tablicą ciągów. Powiedzmy, że mamy następujące ścieżki.Immutable.Set.contains zwraca false

var paths = [["a"], ["a", "b", "c"]]; 

I wtedy utworzyć zestaw niezmienne jak to

var selectedPaths = Immutable.Set(paths); 

chociaż selectedPaths.first()["a"] zwrotów, nie mogę zrozumieć, dlaczego selectedPaths.contains(["a"]) powraca false.

EDIT: Dobrze, dostałem odpowiedź, dlaczego tak się dzieje, ale nadal nie mogę zmusić go do pracy jako muszę go.

ROZWIĄZANIE: Jak @Alnitak stwierdził, Rozwiązałem to przez porównanie ścieżkę do Immutable.List(["a"]) zamiast zwykłej tablicy

Odpowiedz

1

Według the docs, Niezmienne wykorzystuje funkcję Immutable.is() przeprowadzenia kontroli równości, ale check .is() wykonuje tylko „porównywanie wartości” kontroli, gdy podaje się inne Immutable.* obiekty, a nie rodzimych JS tablic, dla których wykonuje to „porównanie odniesienia” czek.

Dlatego spróbuj zapisać swoje wewnętrzne wartości jako Immutable.List zamiast zwykłej tablicy JS.

+0

czy możesz podać przykład? – XeniaSis

+0

Niestety - nie mam odpowiedniego środowiska do testowania kodu 'Immutable.js'. Podejrzewam, że musiałbyś użyć 'Immutable.List ([" a "," b "," c "])' wszędzie tam, gdzie wcześniej używałeś zwykłej wewnętrznej tablicy. – Alnitak

+0

nadal zwraca "false" – XeniaSis

0

Testing dwóch różnych tablic dla równości w ten sposób nie działa w JavaScript, np

["a"] == ["a"] // returns false 

Zgaduję, że niezmienna biblioteka JS wykonuje prostą kontrolę równości. Niestety, będziesz musiał przeprowadzić dokładniejszą kontrolę samodzielnie.

+0

więc, co powinienem zrobić, aby uzyskać pożądaną odpowiedź? – XeniaSis

+0

Zobacz moją edycję - musisz ręcznie sprawdzić swoją równość. Nie jestem pewien, co dokładnie chcesz zrobić, ale jeśli chcesz zmniejszyć zestaw, możesz uruchomić operację filtra i podać własną funkcję do porównania. Zobacz to pytanie dotyczące SO, które koncentruje się na sprawdzaniu równości w tablicy JS: http://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript –

Powiązane problemy