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.UniqNã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.UniqPara 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!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.