Jednak w przeciwieństwie do innych struktur danych, które nie obsługują zduplikowanych wartości, tablice mogą pomieścić więcej niż jedną wartość tego samego typu i wartości. Może to stanowić problem, szczególnie przy przechowywaniu unikalnych wartości.
Ten samouczek uczy nas, jak usunąć zduplikowane elementy z tablicy za pomocą różnych metod.
Za pomocą metody Uniq w Ruby
W Ruby możemy użyć metody Uniq do usunięcia duplikatów elementów z tablicy wejściowej. Możemy wywołać tę metodę w danej tablicy. Metoda następnie zwraca nową tablicę z zduplikowanymi elementami usuwanymi.
Metoda usuwa zduplikowane elementy z tablicy w kolejności wyglądu.
Ta metoda nie modyfikuje oryginalnej tablicy. Zamiast tego tworzy nową tablicę z unikalnymi elementami, które możemy przypisać do nowej zmiennej lub używana do aktualizacji istniejącej zmiennej.
Weźmy przykładową tablicę, która jest pokazana następująco:
ARR = [1,2,3,1,3,3,1,2,3]Jeśli wywołamy metodę Uniq, powinna ona zwrócić poprzednią tablicę z rozebranymi zduplikowanymi elementami.
IRB (Main): 013: 0> ARR.UniqBez względu na to, ile zduplikowanych wartości jest w tablicy, metoda zwraca tylko jedną wartość typu.
Jak wspomniano, metoda Uniq nie modyfikuje oryginalnej tablicy. Dlatego możemy przechowywać wynikową wartość w nową zmienną, jak pokazano następująco:
IRB (Main): 014: 0> new_arr = ARR.UniqAby zmodyfikować oryginalną tablicę, możemy użyć Uniq! metoda. Ta metoda usuwa zduplikowane wartości z oryginalnej tablicy i modyfikuje ją, aby odzwierciedlić nową tablicę.
IRB (Main): 015: 0> ARR.Uniq!Jak widać, wartość zmiennej ARR jest trwale modyfikowana.
Pobieranie unikalnych elementów według klasy
Metoda Uniq działa poprzez utworzenie skrótu poza elementami w tablicy. Stąd, ponieważ klawisze skrótu są unikalne, możemy uzyskać listę klawiszy i użyć ich do utworzenia nowej tablicy.
Możemy jednak przekazać blok do metody, aby odfiltrować elementy według klasy. Przykład pokazano następująco:
IRB (Main): 017: 0> arr = [1, „1”, 2, „2”, 3, „3”]Aby uporządkować zduplikowane wartości według klasy, uruchom następujące czynności:
[cc lang = "text" szerokie = "100%" height = "100%" uciekł = "true" motyw = "blackboard" nowrapt = "0"][/cc]
Nazywamy metodę Uniq na argumencie ARR i:. Jest to znane jako konwersja „symbol do proc”. Przekształca symbol: klasa do proc | obj | obj.klasa .
Wywołanie unikalnej metody z PROC jako argumentu zwraca nową tablicę, która zawiera tylko unikalne elementy oparte na klasie każdego elementu.
W tym przypadku metoda zachowuje tylko jedną 1, jedną „1” i tak dalej. Ale zachowuje pierwsze występowanie liczby i pierwsze występowanie ciągu.
Jest tak, ponieważ wykorzystuje metodę klasy elementu. Klasa liczb całkowitych i strun są różne.
Wniosek
Omówiliśmy o zastosowaniu metod Uniq w celu usunięcia duplikatu wartości z tablicy wejściowej. Nauczyliśmy się również, jak działać na miejscu, umożliwiając wymianę oryginalnej tablicy i uporządkowanie duplikatów na podstawie klasy nadrzędnej.