Ruby on rails 从键创建新数组
我有一个数组:Ruby on rails 从键创建新数组,ruby-on-rails,arrays,ruby,Ruby On Rails,Arrays,Ruby,我有一个数组: [{ "name": "Category 1", "entries": [{ "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" }, { "question": "Question 3", "answer":
[{
"name": "Category 1",
"entries": [{
"question": "Question 1",
"answer": "Answer 1"
}, {
"question": "Question 2",
"answer": "Answer 2"
}, {
"question": "Question 3",
"answer": "Answer 3"
}]
}, {
"name": "Category 2",
"entries": [{
"question": "Question 1",
"answer": "Answer 1"
}, {
"question": "Question 2",
"answer": "Answer 2"
}, {
"question": "Question 3",
"answer": "Answer 3"
}]
}]
我想做的是创建一个只包含条目的新数组
因此,我最终得出以下结论:
[{
"question": "Question 1",
"answer": "Answer 1"
}, {
"question": "Question 2",
"answer": "Answer 2"
}, {
"question": "Question 3",
"answer": "Answer 3"
}, {
"question": "Question 1",
"answer": "Answer 1"
}, {
"question": "Question 2",
"answer": "Answer 2"
}, {
"question": "Question 3",
"answer": "Answer 3"
}]
在PHP中,我只需将其推入一个新数组中。。。但在Ruby中,是否可以使用groupby
或collect
来实现此目的?使用:
使用:
并将为您提供所需的输出:
your_array.map {|hash| hash[:entries]}.flatten
#=> [{:question=>"Question 1", :answer=>"Answer 1"},
# {:question=>"Question 2", :answer=>"Answer 2"},
# {:question=>"Question 3", :answer=>"Answer 3"},
# {:question=>"Question 1", :answer=>"Answer 1"},
# {:question=>"Question 2", :answer=>"Answer 2"},
# {:question=>"Question 3", :answer=>"Answer 3"}]
并将为您提供所需的输出:
your_array.map {|hash| hash[:entries]}.flatten
#=> [{:question=>"Question 1", :answer=>"Answer 1"},
# {:question=>"Question 2", :answer=>"Answer 2"},
# {:question=>"Question 3", :answer=>"Answer 3"},
# {:question=>"Question 1", :answer=>"Answer 1"},
# {:question=>"Question 2", :answer=>"Answer 2"},
# {:question=>"Question 3", :answer=>"Answer 3"}]
这里可以使用
map
和flatte
来代替flatte\map
,而不是array.map{hash}hash[:entries]}。flatte
@dkpflatte\map
大约快两倍,即map
+flatte
:)[[{question=>问题1],:答案=>“答案1”,{:问题=>“问题2”、:答案=>“答案2”}、{:问题=>“问题3”、:答案=>“答案3”}、{:问题=>“问题1”、:答案=>“答案1”}、{:问题=>“问题2”、:答案=>“答案2”}、{:问题=>“问题3”、:答案=>“答案3”}]
-我以为平面图
会在数组中生成数组here@dkp,这是你的第一个评论,很明显,考虑到flat_map
的存在理由是为了避免map
和flatten
的需要。也许可以说“如果数组
是你的数组,”并删除array
,这会让人分心。这里可以使用map
和flatten
来获得像array.map{hash | hash[:entries]}这样的哈希数组,而不是flat|map
.flatte
@dkpflatte\u map
比map
+flatten
:)[[{{:问题=>“问题1”,“问题1”,“答案1”,“问题2”,“答案2”,“问题3”,“答案3”,“答案1”,“答案2”,“问题2”,:answer=>“answer 2”},{:question=>“question 3”,:answer=>“answer 3”}]
-我想平面映射将在数组中生成数组here@dkp,这是你的第一个评论,这是显而易见的,考虑到flat_map
的存在理由是为了避免map
和flatte
的需要“如果array
是您的数组”,并删除array
,这会有点分散您的注意力。当您给出一个示例时,为每个输入对象分配一个变量(例如,arr=[{“name”:“Category 1”,…]
)会很有帮助。这样,读者就可以引用变量(arr
)在答案和注释中,不必定义它们,所有读者都将使用相同的变量。我建议您编辑您的问题,这样做。通常,对于所需或预期的输出对象,不需要这样做。当您给出一个示例时,为每个输入对象分配一个变量(例如,arr=[{“name”:类别1“,…]”
)。这样,读者就可以在答案和注释中引用变量(arr
),而无需对其进行定义,所有读者都将使用相同的变量。我建议您编辑您的问题,这样做。通常,对于所需或预期的输出对象,不需要这样做。