ruby sort_by方法

U-L*_*U-L 22 ruby

我刚开始学习红宝石.我有一系列哈希.我希望能够根据哈希中的元素对数组进行排序.我想我应该可以使用sort_by方法.有人可以帮忙吗?

#array of hashes
array = []
hash1 = {:name => "john", :age => 23}
hash2 = {:name => "tom", :age => 45}
hash3 = {:name => "adam", :age => 3}
array.push(hash1, hash2, hash3)
puts(array)
Run Code Online (Sandbox Code Playgroud)

这是我的sort_by代码:

# sort by name
array.sort_by do |item|
    item[:name]
end
puts(array)
Run Code Online (Sandbox Code Playgroud)

阵列没有任何反应.也没有错误.

ste*_*lag 39

你必须存储结果:

res = array.sort_by do |item|
    item[:name]
end 
puts res
Run Code Online (Sandbox Code Playgroud)

或者修改数组本身:

array.sort_by! do |item| #note the exclamation mark
    item[:name]
end 
puts array
Run Code Online (Sandbox Code Playgroud)

  • Bang方法(那些以!结尾的方法)会在适当的位置进行修改,但最好不要使用它们并将新对象创建为旧对象的修改版本.通过允许方法改变对象,可以在程序中引入细微的错误. (6认同)