我想比较两个数组。每个字母都有三个字母,如果字母不同,则返回的数字等于不匹配的字母,例如:
arr1 = ["A", "B", "C"]
arr2 = ["A", "D", "E"]
我需要一个返回2的方法。因为有两个元素不匹配。
答案 0 :(得分:3)
您可以使用Enumerable#zip和Array#count。
arr1.zip(arr2).count { |a1,a2| a1!=a2 }
#=> 2
请注意
arr1.zip(arr2)
#=> [["A", "A"], ["B", "D"], ["C", "E"]]
等效地,使用Array#transpose。
[arr1, arr2].transpose.count { |a1,a2| a1!=a2 }
#=> 2
答案 1 :(得分:0)
假设您的数组长度相同且没有重复数据,则速度会更快:
arr1.length - (arr1 & arr2).length
# => 2