【发布时间】:2018-05-23 22:56:12
【问题描述】:
我有一个这样的哈希数组:
items = [{"id"=>"123", "code"=>"abc","name"=>"test", "type"=>["good"]},
{"id"=>"555", "code"=>"ddd","name"=>"foo", "type"=>["better"]},
{"id"=>"098", "code"=>"zyx","name"=>"bar", "type"=>["best"]}]
我正在尝试通过键对数组中的每个散列进行排序。
我试过这个:
items.each { |item| item = item.sort.to_h }
返回相同的结果:
[{"id"=>"123", "code"=>"abc", "name"=>"test", "type"=>["good"]},
{"id"=>"555", "code"=>"ddd", "name"=>"foo", "type"=>["better"]},
{"id"=>"098", "code"=>"zyx", "name"=>"bar", "type"=>["best"]}]
但是当我尝试这个时:
items[0].sort.to_h
这是结果:
{"code"=>"abc", "id"=>"123", "name"=>"test", "type"=>["good"]}
所以看起来当我使用items[x] 调用items 中的各个元素时,其中x 是数组中的索引值,它会对其进行排序。
但是我需要一个解决方案来遍历每个元素并保存排序。
有什么想法吗?
【问题讨论】:
-
使用
map而不是each。 -
正如@Sagar 所说,使用
items.map { |item| item = item.sort.to_h } -
each返回接收者。 -
也不确定排序哈希的目的是什么......
-
@SagarPandya 我希望你发布答案。你的建议完全正确。