Ruby數(shù)組操作怎樣去重最有效

小樊
81
2024-11-06 02:21:34

在Ruby中,最有效的方法之一去重?cái)?shù)組是通過使用uniq方法。這將返回一個(gè)新的數(shù)組,其中刪除了重復(fù)的元素,同時(shí)保持了元素的原始順序。以下是一個(gè)例子:

array = [1, 2, 3, 1, 2, 4, 5, 6, 4, 7]
unique_array = array.uniq
puts unique_array.inspect
# 輸出: [1, 2, 3, 4, 5, 6, 7]

如果你需要根據(jù)對(duì)象的屬性去重,可以使用uniq方法結(jié)合塊。例如,假設(shè)你有一個(gè)Person類,并且你想要根據(jù)name屬性去重:

class Person
  attr_accessor :name, :age

  def initialize(name, age)
    @name = name
    @age = age
  end
end

people = [
  Person.new("Alice", 30),
  Person.new("Bob", 25),
  Person.new("Alice", 30),
  Person.new("Eve", 28)
]

unique_people = people.uniq { |person| person.name }
puts unique_people.inspect
# 輸出: [
#   #<Person:0x00007f981d7c90 @name="Alice", @age=30>,
#   #<Person:0x00007f981d7b80 @name="Bob", @age=25>,
#   #<Person:0x00007f981d7a70 @name="Eve", @age=28>
# ]

在這個(gè)例子中,uniq方法通過傳遞一個(gè)塊來(lái)根據(jù)name屬性去重,同時(shí)保持了Person對(duì)象的原始順序。

0