测试一个数组的元素是否包含在另一个数组中

Mar*_*ear 6 ruby arrays

我有以下数组:

passing_grades = ["A", "B", "C", "D"]
student2434 = ["F", "A", "C", "C", "B"]
Run Code Online (Sandbox Code Playgroud)

我需要验证student数组中的所有元素都包含在passing_grades数组中.在上面的场景中,student2434将返回false.但是这个学生:

student777 = ["C", "A", "C", "C", "B"]
Run Code Online (Sandbox Code Playgroud)

会回来的true.我尝试过类似的东西:

if student777.include? passing_grades then return true else return false end
Run Code Online (Sandbox Code Playgroud)

没有成功.任何帮助表示赞赏.

Iur*_* G. 9

PASSING_GRADES = ["A", "B", "C", "D"]

def passed?(grades)
  (grades - PASSING_GRADES).empty?
end
Run Code Online (Sandbox Code Playgroud)

类似于CDub但没有bug.在我看来更具可读性


CDu*_*Dub 7

您可以使用一种方法来处理数组的差异,如果存在任何结果,则它们不会传递:

PASSING_GRADES = ["A", "B", "C", "D"]

def passed?(grades)
  grades.all? {|grade| PASSING_GRADES.include?(grade)}
end
Run Code Online (Sandbox Code Playgroud)

例:

1.9.3-p484 :117 > student777 = ["C", "A", "C", "C", "B"]
 => ["C", "A", "C", "C", "B"] 
1.9.3-p484 :118 > passed?(student777)
 => true
1.9.3-p484 :118 > passed?(student2434)
 => false
Run Code Online (Sandbox Code Playgroud)