ruby-on-rails - 从键创建新的数组数组

标签 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": "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 中,是否可以使用 group_bycollect 来实现这一点?

最佳答案

使用Enumerable#flat_map :

array = [{
    "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"
    }]
}]
array.flat_map { |hash| hash[: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"}]

关于ruby-on-rails - 从键创建新的数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39509481/

相关文章:

c - 在结构数组中输入字符的循环无法正常工作

ruby - 如何从 Ruby 中调用 Windows DLL?

ruby - 在 Capybara 中取消页面加载

javascript - 使用 Ajax 真实性 token 在 Rails 中从 Index.js.erb 渲染到 Index.html.erb 时出现问题

ruby-on-rails - 如何使用 Instant Rails 在 Windows 中升级我的 Ruby 版本?

ruby-on-rails - Webpacker on Rails 用于生成带有静态 URL 的 widget.js

java - 如何在(Android)Java中定义间隔列表?

javascript - 如何用下划线替换数组中的某些字母

css - Chrome 和 Firefox/Safari 之间的 Facebook Graph API 个人资料图片大小存在差异

ruby-on-rails - 在 ActiveRecord 中使用 SQL Function 和 IN