ruby排序方法
我刚刚开始学习ruby。我有一个哈希数组。我希望能够根据散列中的元素对数组进行排序。我想我应该能够使用sort_by方法。有人能帮忙吗ruby排序方法,ruby,Ruby,我刚刚开始学习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,
#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)
这是我的分类代码:
# sort by name
array.sort_by do |item|
item[:name]
end
puts(array)
数组没有发生任何变化。也没有错误 您必须存储结果:
res = array.sort_by do |item|
item[:name]
end
puts res
或修改阵列本身:
array.sort_by! do |item| #note the exclamation mark
item[:name]
end
puts array
您可以在一行中使用“按方法排序”:
array.sort_by!{|item| item[:name]}
您也可以通过正常的排序方法来完成
array.sort { |a,b| a[:name] <=> b[:name] }
array.sort{| a,b | a[:name]b[:name]}
以上是升序,降序一用b代替a。要修改数组本身,请使用排序谢谢。我也有同样的想法。通过例子看到了另一种情况。因此,sort_by不做in place.Bang方法(以!)结尾的方法)修改到位,但最好不要使用它们,而是创建新对象作为旧对象的修改版本。通过允许方法对对象进行变异,可以将细微的错误引入到程序中。感谢您的洞察力。