如何迭代Ruby

时间:2017-05-15 14:22:34

标签: ruby-on-rails arrays ruby

我有一个数组数组,其中包含三个测试的详细信息。这是数组:

test_arr = [
  [‘unit test 1’, ‘physics’, ‘25’],
  [‘unit test 2’, ‘chemistry’, ‘30’],
  [‘final test’, ‘math’, ‘50’]
]

我想迭代这个数组三次(因为只有三个测试,其数据包含在数组中),以便在仅包含主题和标记的数组中获取哈希值。

我按如下方式进行迭代:

test_arr.each do |ta|
  all_test_details << { subject: ta[1], marks: ta[2] }
end

我希望all_test_details像这样阅读=&gt;

[ { subject: ‘physics’, marks: 25 },
  { subject: ‘chemistry’, marks: 30 },
  { subject: ‘math’, marks: 50 } ]

但是当我运行代码时,我得到的是all_test_details重复十次。我无法弄清楚原因。

如何在包含哈希的单个数组中获取测试的名称和标记?

1 个答案:

答案 0 :(得分:4)

利用map

test_arr.map { |data| { subject: data[1], marks: data[2] } }

#=> [{:subject=>"physics",   :marks=>"25"},
#=>  {:subject=>"chemistry", :marks=>"30"},
#=>  {:subject=>"math",      :marks=>"50"}]