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

问题描述 投票:0回答:3

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

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

3位置,2大于0。但在以下内容中:

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

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

arrays ruby
3个回答
5
投票

试试这个吧

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

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条件中),你可以在!!前加上或附加|| false


0
投票

如果b中的数字大于给定指数中a中的数字,则返回b中的数字。如果b中没有数字更大,将返回nil

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

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

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

您将获得6的返回值。

© www.soinside.com 2019 - 2024. All rights reserved.