ruby – 按数组键排序哈希数组
发布时间:2020-12-17 04:01:02 所属栏目:百科 来源:网络整理
导读:我正在尝试过滤和重新排序哈希数组.过滤器和顺序由另一个字符串数组定义,这些字符串表示散列的“slug”键的值.生成的数组应该只包含散列,其“slug”键的值包含在slugs数组中,并以相同的顺序排序.如果我有第一个数组: data = [ { "slug" = "lemon","label" =
我正在尝试过滤和重新排序哈希数组.过滤器和顺序由另一个字符串数组定义,这些字符串表示散列的“slug”键的值.生成的数组应该只包含散列,其“slug”键的值包含在slugs数组中,并以相同的顺序排序.如果我有第一个数组:
data = [ { "slug" => "lemon","label" => "Lemon Label" },{ "slug" => "table","label" => "Table Label" },{ "slug" => "peach","label" => "Peach Label" },{ "slug" => "strawberry","label" => "Strawberry Label" },{ "slug" => "bread","label" => "Bread Label" },{ "slug" => "orange","label" => "Orange Label" } ] 和第二个数组: ordered_keys = ["orange","lemon","strawberry"] 那么,结果应该是这样的数组: result = [ { "slug" => "orange","label" => "Orange Label" },{ "slug" => "lemon","label" => "Strawberry Label" } ] 我设法得到了这个过滤功能: result = data.select{|x| ordered_keys.include? x.slug} 但我找不到一个聪明的方法来获得有序的.有任何想法吗? 解决方法
使用map将您的有序键数组转换为相应的哈希值.要映射的输入数组的顺序定义了输出数组的顺序.
ordered_keys.map{|k| data.find{|h| h["slug"] == k}} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |