Ruby 红宝石注入条件
我有一个充满散列的数组。数据结构如下所示:Ruby 红宝石注入条件,ruby,Ruby,我有一个充满散列的数组。数据结构如下所示: students = [ { "first_name" => "James", "last_name" => "Sullivan", "age" => 20, "study_results" => {"CAR" => 1, "PR1" => 1, "MA1" => 1, "BEN" => 2, "SDP" => nil} } ] students.selec
students = [
{
"first_name" => "James",
"last_name" => "Sullivan",
"age" => 20,
"study_results" => {"CAR" => 1, "PR1" => 1, "MA1" => 1, "BEN" => 2, "SDP" => nil}
}
]
students.select{|student| student['study_results'].values.count(1) >= 2}
我想从至少两门学科中找到分数1
的学生
我尝试将带有标记的散列转换为数组,然后使用inject
方法计算1
的数量,并确定该数字是否为>1
:
students.select{|student
(
(student["study_results"].to_a)
.inject(0){|sum, x| sum += 1 if x.include?(1)}
) > 1
}
有没有办法在方法中加入一个条件,或者我应该找一个不同的方法来解决它?我建议您在发布之前尝试解决这个问题,但是您使它变得不必要的复杂。我会这样写:
students = [
{
"first_name" => "James",
"last_name" => "Sullivan",
"age" => 20,
"study_results" => {"CAR" => 1, "PR1" => 1, "MA1" => 1, "BEN" => 2, "SDP" => nil}
}
]
students.select{|student| student['study_results'].values.count(1) >= 2}
仅此而已,无需inject
。你在这里用错了
Ruby集合有很多有用的方法。如果您发现自己在使用inject
或each
,有一种更好的方法,90%的时间都是这样
说明:
文档