Ruby on rails 在ruby中对两个数组进行排序或映射
我有一个节数组Ruby on rails 在ruby中对两个数组进行排序或映射,ruby-on-rails,ruby,arrays,Ruby On Rails,Ruby,Arrays,我有一个节数组[‘第一部分’,‘第二部分’]和一个项目对象数组[item1,item2,item3] 每个item对象都有一个section属性(本例中的值为'part one'或'part two')和一个order属性,该属性是一个整数 我想创建一个数组,如 [ ['part one',[item1,item3]],['part two',[item3]] ] 或 在哪里 item1.section == 'part one' and item1.order == 1, item3.se
[‘第一部分’,‘第二部分’]
和一个项目对象数组[item1,item2,item3]
每个item对象都有一个section属性(本例中的值为'part one'或'part two')和一个order属性,该属性是一个整数
我想创建一个数组,如
[ ['part one',[item1,item3]],['part two',[item3]] ]
或
在哪里
item1.section == 'part one' and item1.order == 1,
item3.section == 'part one' and item3.order == 2,
item2.section == 'part two' and item2.order == 1
要按
部分进行分组,并按顺序进行排序,您可以执行以下操作:
items.sort_by(&:order).group_by(&:section).to_a
# => [["part one", [item1, item3]], ["part two", [item2]]]
根据order
属性对所有项目进行排序,同时将它们分组到数组的散列中,每个键都是不同的部分
to_a
将哈希值转换为数组
如果您想保持部分
列表的顺序,可以使用它来定义顺序,而不是到a
:
grouped = items.sort_by(&:order).group_by(&:section)
# => { "part one" => [item1, item3], "part two" => [item2] }
sorted = sections.zip(sections.map { |s| grouped[s] })
# => [["part one", [item1, item3]], ["part two", [item2]]]
要按部分进行分组,并按顺序进行排序,您可以执行以下操作:
items.sort_by(&:order).group_by(&:section).to_a
# => [["part one", [item1, item3]], ["part two", [item2]]]
根据order
属性对所有项目进行排序,同时将它们分组到数组的散列中,每个键都是不同的部分
to_a
将哈希值转换为数组
如果您想保持部分
列表的顺序,可以使用它来定义顺序,而不是到a
:
grouped = items.sort_by(&:order).group_by(&:section)
# => { "part one" => [item1, item3], "part two" => [item2] }
sorted = sections.zip(sections.map { |s| grouped[s] })
# => [["part one", [item1, item3]], ["part two", [item2]]]
要按部分进行分组,并按顺序进行排序,您可以执行以下操作:
items.sort_by(&:order).group_by(&:section).to_a
# => [["part one", [item1, item3]], ["part two", [item2]]]
根据order
属性对所有项目进行排序,同时将它们分组到数组的散列中,每个键都是不同的部分
to_a
将哈希值转换为数组
如果您想保持部分
列表的顺序,可以使用它来定义顺序,而不是到a
:
grouped = items.sort_by(&:order).group_by(&:section)
# => { "part one" => [item1, item3], "part two" => [item2] }
sorted = sections.zip(sections.map { |s| grouped[s] })
# => [["part one", [item1, item3]], ["part two", [item2]]]
要按部分进行分组,并按顺序进行排序,您可以执行以下操作:
items.sort_by(&:order).group_by(&:section).to_a
# => [["part one", [item1, item3]], ["part two", [item2]]]
根据order
属性对所有项目进行排序,同时将它们分组到数组的散列中,每个键都是不同的部分
to_a
将哈希值转换为数组
如果您想保持部分
列表的顺序,可以使用它来定义顺序,而不是到a
:
grouped = items.sort_by(&:order).group_by(&:section)
# => { "part one" => [item1, item3], "part two" => [item2] }
sorted = sections.zip(sections.map { |s| grouped[s] })
# => [["part one", [item1, item3]], ["part two", [item2]]]
您想按项目对项目进行分组。部分
,按项目对每组进行排序。顺序
?@Stefan yes这是correct@xlembouras没有什么工作不应该是[“第二部分”,[item3]]
的[“第二部分”,[item2]]
?您想按项目对项目进行分组,按项目对每组进行排序。顺序
?@Stefan是correct@xlembouras没有什么工作不应该是[“第二部分”,[item3]]
的[“第二部分”,[item2]]
?您想按项目对项目进行分组,按项目对每组进行排序。顺序
?@Stefan是correct@xlembouras没有什么工作不应该是[“第二部分”,[item3]]
的[“第二部分”,[item2]]
?您想按项目对项目进行分组,按项目对每组进行排序。顺序
?@Stefan是correct@xlembouras没有任何东西不应该是['part two',[item 3]]
的['part two',[item 2]]
?答案正确,但需要节数组,因为它包含正确的顺序正确答案,但需要节数组,因为它包含正确的顺序正确答案,但需要节数组,因为它包含正确的顺序正确答案,但需要节数组,因为它包含正确的顺序