Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从键创建新数组_Ruby On Rails_Arrays_Ruby - Fatal编程技术网

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
@dkp
flatte\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
@dkp
flatte\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
),而无需对其进行定义,所有读者都将使用相同的变量。我建议您编辑您的问题,这样做。通常,对于所需或预期的输出对象,不需要这样做。