Usuń duplikaty z rubinowej tablicy

Usuń duplikaty z rubinowej tablicy
Tablica to niesamowita struktura danych, która pozwala przechowywać zbiór elementów. Każdy element w tablicy jest przypisany unikalną wartością liczb całkowitą, która oznacza jego pozycję w tablicy. Tablice to jedne z najpopularniejszych i wszechstronnych struktur danych w Ruby i innych językach programowania. Możesz użyć tablic do przechowywania dowolnego rodzaju danych, takich jak struny, liczby całkowite, a nawet inne tablice.

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.Uniq
=> [1, 2, 3]

Bez 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.Uniq
=> [1, 2, 3]

Aby 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!
=> [1, 2, 3]
IRB (Main): 016: 0> ARR
=> [1, 2, 3]

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.