将一个数组中的元素与另一个数组中的元素进行比较

时间:2017-12-15 20:28:13

标签: arrays ruby

我有两个具有相同大小的数字数组。如何判断第二个数组中是否有任何元素大于给定索引处的第一个数组?通过这个例子:

a = [2, 8, 10]
b = [3, 7, 5]
位置3

2大于0。但是在下面:

a = [1, 10]
b = [0, 8]

没有这样的元素。在索引00不大于1,在索引18不大于10

3 个答案:

答案 0 :(得分:5)

试试这个

a.each_with_index.any? { |item, index| b[index] > item }

答案 1 :(得分:4)

无需索引。只需将它们配对并检查每一对。

b.zip(a).any? { |x, y| x > y }
=> true or false

一个棘手的问题:检查每个位置是否a是最大值:

a.zip(b).map(&:max) != a
=> true or false

非常有效的(时间和空间):

b.zip(a) { |x, y| break true if x > y }
=> true or nil

(如果您需要true / false(通常不会,例如在if - 条件中),您可以添加!!或追加{{1 }})

答案 2 :(得分:0)

如果b中的某个数字大于给定索引中a中的数字,则会返回b中的数字。如果b中的数字不大,则会返回nil

b.detect.with_index { |n, index| n > a[index] }

例如,如果您有以下数组。

a = [3, 4, 5]
b = [6, 7, 8]

您将获得6的返回值。