如何在不使用Ruby中的唯一方法的情况下删除数组中的重复值?

如何在不使用Ruby中的唯一方法的情况下删除数组中的重复值?,ruby,Ruby,我有一个程序,其中数组中的值是[1,2,46,5,8,2,8],现在我想删除重复的值,但不使用Ruby的唯一方法。有谁能帮助我们理解这样做的逻辑吗?我想制作一个独特的数组 我使用的代码可能不是绝对的问题,这就是为什么我得到前两种情况的答案,而不是最后一种。代码如下: def uniq(array) i=0 while i < array.length if array[i] == array[i+1] puts "" e

我有一个程序,其中数组中的值是[1,2,46,5,8,2,8],现在我想删除重复的值,但不使用Ruby的唯一方法。有谁能帮助我们理解这样做的逻辑吗?我想制作一个独特的数组

我使用的代码可能不是绝对的问题,这就是为什么我得到前两种情况的答案,而不是最后一种。代码如下:

 def uniq(array)
    i=0
    while i < array.length
        if array[i] == array[i+1]
          puts ""
        else
        puts i
        end
        i += 1
    end
   end

   uniq([5,5,5,5])
   uniq([1])
    uniq([1,2,46,5,8,2,8])
def uniq(阵列)
i=0
而i
您可以使用交叉点或并集:

arr = [1,2,46,5,8,2,8]
# => [1,2,46,5,8,2,8]
unique_arr = arr & arr
# => [1, 2, 46, 5, 8]

另一种方法是转换为一个集合,该集合将删除重复项,然后再转换回一个数组。首先
需要“设置”
(在标准库中),然后,以下任一项:

Set.new([1,2,3,3]).to_a
# => [1, 2, 3]

# Does the same thing without passing the array to the Set constructor
[1,2,3,3].reduce(Set.new, &:add).to_a
# => [1, 2, 3]

只是一些想法。可以先转换为集合,然后再转换回数组。或者遍历数组,将每个元素推送到另一个数组(如果它不在数组中)。不是代码编写服务。您需要向我们展示您编写的代码,并询问有关该代码的具体问题。请阅读如何构造,以及。您为什么不想使用uniq?这正是你应该使用的方法,因为它完全符合你的要求。如果
uniq
不适用于您,那么您为对象定义相等关系的方式可能有问题,正确的修复方法不是避免
uniq
,而是修复损坏的相等。嗨,Jorg!!感谢您提供的信息。
'require set'
还将
Array#添加到_set
中,这是将数组转换为集合的另一种好方法……或union()。