首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ruby散列中计算特定值的外观数?

如何在Ruby散列中计算特定值的外观数?
EN

Stack Overflow用户
提问于 2018-08-14 11:37:04
回答 1查看 430关注 0票数 0

我有一个Ruby哈希(最初是rails中的param )

如何计算每个correctness中的answers_attributes数?

(我这么做的原因是,我试图用rails创建一个多项选择的测试。一个问题可能有很多答案。我试图使用multi_correct复选框来决定哪个问题有许多正确的答案。但这有点违背直觉。因此,我希望后端通过计算每个问题的正确性来决定)

代码语言:javascript
复制
{
  "utf8" => "✓", "authenticity_token" => "r5xX46JG/GPF6+drEWmMPR+LpOI0jE0Tta/ABQ0rZJJE+UbbEjvNMLP6y2Z9IsWlXq27PR6Odx0EK4NECPjmzQ==", "question_bank" => {
    "name" => "123213", "questions_attributes" => {
      "0" => {
        "content" => "question 1", "multi_correct" => "no", "answers_attributes" => {
          "0" => {
            "content" => "as1", "correctness" => "false"
          }, "1" => {
            "content" => "as2", "correctness" => "false"
          }, "2" => {
            "content" => "as3", "correctness" => "true"
          }, "3" => {
            "content" => "as4", "correctness" => "false"
          }
        }
      }, "1" => {
        "content" => "q2", "multi_correct" => "no", "answers_attributes" => {
          "0" => {
            "content" => "a1", "correctness" => "false"
          }, "1" => {
            "content" => "a2", "correctness" => "false"
          }, "2" => {
            "content" => "a3", "correctness" => "true"
          }, "3" => {
            "content" => "a4", "correctness" => "false"
          }
        }
      }, "2" => {
        "content" => "q3", "multi_correct" => "no", "answers_attributes" => {
          "0" => {
            "content" => "aa1", "correctness" => "false"
          }, "1" => {
            "content" => "aa2", "correctness" => "false"
          }, "2" => {
            "content" => "aa3", "correctness" => "false"
          }, "3" => {
            "content" => "aa4", "correctness" => "true"
          }
        }
      }
    }
  }, "commit" => "Submit"
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-14 11:51:31

如果您只想计算散列中有多少正确的答案,可以使用inject来完成。以下是一种方法:

代码语言:javascript
复制
# iterate over the questions
hash['question_bank']['questions_attributes'].values.inject(0) do |count, q|
  # iterate over the answers
  count += q['answers_attributes'].values.inject(0) do |a_count, a|
    a_count += a['correctness'] == 'true' ? 1 : 0
  end
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51840500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档