如何在不使用Ruby中的唯一方法的情况下删除数组中的重复值?
我有一个程序,其中数组中的值是[1,2,46,5,8,2,8],现在我想删除重复的值,但不使用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
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()。