Remova duplicatas de uma matriz de rubi

Remova duplicatas de uma matriz de rubi
Uma matriz é uma estrutura de dados incrível que permite armazenar uma coleção de elementos. Cada elemento na matriz é atribuído com um valor inteiro único que denota sua posição na matriz. Matrizes são algumas das estruturas de dados mais populares e versáteis em Ruby e outras linguagens de programação. Você pode usar as matrizes para armazenar qualquer tipo de dados, como strings, números inteiros ou até outras matrizes.

No entanto, diferentemente de outras estruturas de dados que não suportam valores duplicados, as matrizes podem conter mais de um valor do mesmo tipo e valor. Isso pode ser um problema, especialmente ao armazenar valores únicos.

Este tutorial nos ensina a remover os elementos duplicados de uma matriz usando vários métodos.

Usando o método Uniq em Ruby

Em Ruby, podemos usar o método Uniq para remover os elementos duplicados de uma matriz de entrada. Podemos chamar esse método em uma determinada matriz. O método retorna uma nova matriz com os elementos duplicados sendo removidos.

O método remove os elementos duplicados da matriz na ordem de aparência.

Este método não modifica a matriz original. Em vez disso, ele cria uma nova matriz com elementos exclusivos, que podemos atribuir a uma nova variável ou usados ​​para atualizar uma variável existente.

Pegue a matriz de exemplo que é mostrada no seguinte:

arr = [1,2,3,1,3,3,1,2,3]

Se chamarmos o método Uniq, ele deve retornar a matriz anterior com os elementos duplicados despojados.

IRB (principal): 013: 0> arr.Uniq
=> [1, 2, 3]

Não importa quantos valores duplicados estejam na matriz, o método retorna apenas um único valor do tipo.

Como mencionado, o método Uniq não modifica a matriz original. Portanto, podemos armazenar o valor resultante em uma nova variável, como mostrado no seguinte:

IRB (principal): 014: 0> new_arr = arr = arrum.Uniq
=> [1, 2, 3]

Para modificar a matriz original, podemos usar o Uniq! método. Este método remove os valores duplicados da matriz original e o modifica para refletir a nova matriz.

IRB (principal): 015: 0> arr.Uniq!
=> [1, 2, 3]
IRB (principal): 016: 0> arr
=> [1, 2, 3]

Como você pode ver, o valor da variável ARR é permanentemente modificado.

Buscar itens exclusivos por classe

O método Uniq funciona criando um hash a partir dos elementos da matriz. Portanto, como as chaves de hash são únicas, podemos obter a lista das chaves e usá -las para criar uma nova matriz.

No entanto, podemos passar um bloco para o método para filtrar os elementos por classe. Um exemplo é demonstrado no seguinte:

IRB (principal): 017: 0> arr = [1, '1', 2, '2', 3, '3']

Para resolver os valores duplicados por classe, execute o seguinte:

[cc lang = "text" width = "100%" altura = "100%" escape = "true" tema = "Blackboard" Nowrap = "0"]

[/cc]

Chamamos o método Uniq no ARR com o argumento de classe. Isso é conhecido como conversão de "símbolo para proc". Ele converte o símbolo: classe para um proc | obj | obj.aula .

Chamar o método único com o PROC como argumento retorna uma nova matriz que contém apenas os elementos únicos baseados na classe de cada elemento.

Nesse caso, o método preserva apenas um 1, um "1" e assim por diante. Mas mantém a primeira ocorrência do número e a primeira ocorrência da corda.

Isso ocorre porque ele usa o método de classe do elemento. A classe dos números inteiros e as cordas são diferentes.

Conclusão

Discutimos sobre o uso dos métodos Uniq para remover os valores duplicados de uma matriz de entrada. Também aprendemos a operar no lugar, permitindo que você substitua a matriz original e resolva os valores duplicados com base na classe pai.