gpt4 book ai didi

Ruby 代码优化 : select from array

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:59 25 4
gpt4 key购买 nike

假设我们对 SomeClass 进行分类。

class SomeClass < SomeClassThatAssignAttributesOnInitialization
attr_accessor :group
attr_accessor :name
end

它的实例数组

arr = [SomeClass.new(group:0, name:'one'),
SomeClass.new(group:0, name:'two'),
SomeClass.new(group:1, name:'three'),
SomeClass.new(group:1, name:'four')]

我需要将每个组的第一个元素放入数组中。

现在它可以通过下一种方式工作

current_group = nil
first_elements = arr.map do |instance|
if current_group != instance.group
current_group = instance.group
instance.name
end
end

这很好用,但我认为有某种“Ruby”方式可以做到这一点。

谁能帮帮我?

谢谢

最佳答案

Ruby 在 Enumerable 对象上有一个方便的 group_by 方法,它返回一个 Hash:

arr.group_by(&:group)
# => {0=>[#<SomeClass group=0, name="one">, #<SomeClass group=0, name="two">], 1=>[#<SomeClass group=1, name="three">, #<SomeClass group=1, name="four">]}

所以只需将几个方法链接到最后:

arr.group_by(&:group).values.map {|vs| vs[0].name}
# => ["one", "three"]

关于Ruby 代码优化 : select from array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com