在数组中查找最后一次匹配条件

时间:2019-07-11 08:35:34

标签: arrays ruby

我找不到用于查找与条件匹配的数组的最后一个元素的方法。

这应该可以,但这似乎不是最好的方法:

array.reverse.find {condition}

array[array.rindex {condition}]

会期望像array.rfind {condition} ...

这样的东西

2 个答案:

答案 0 :(得分:1)

array.rindex(condition)将给出最后一个匹配的元素索引号。 这将为您提供最后一个匹配元素

array[array.rindex(condition)]

答案 1 :(得分:0)

我认为 reduce 可以完成这项工作。

array.reduce { |accumulator, element| condition ? element : accumulator }

这样,返回的值将是分配给累加器的最后一个值。

请注意,累加器总是从可枚举的第一个元素开始,因此如果您想在没有元素满足条件的情况下返回 nil,则必须将其作为参数传递给 reduce,如下所示:< /p>

array.reduce(nil) { |accumulator, element| condition ? element : accumulator }