我正在使用 Ruby 2.4。我知道如何在匹配条件的元素数组中找到所有索引 ...
arr.each_index.select{|i| arr[i] == 'x'}
但是如何从数组中的特定位置开始找到与条件匹配的第一个元素的索引?那么,如果我想查找在索引 = 2 处或之后只有一个字符的字符串怎么办? (如果 tehre 少于 2 个元素,该操作可以返回 nil)。例如,如果我有
["abc", "d", "efg", "h", "abcde"]
该操作将返回“3”,因为元素“h”位于位置 3,只有一个字符并且在索引 2 处或之后。
最佳答案
使用 select
将返回 block 返回 true
的所有值,例如:
p arr = ["abc", "d", "efg", "h", "abcde", "k"]
# => ["abc", "d", "efg", "h", "abcde", "k"]
p arr.each_index.select{|i| i >= 2 and arr[i].length == 1}
# => [3, 5]
改为使用 detect
如果您只想返回 block 返回 true
的第一个值:
p arr = ["abc", "d", "efg", "h", "abcde", "k"]
# => ["abc", "d", "efg", "h", "abcde", "k"]
p arr.each_index.detect{|i| i >= 2 and arr[i].length == 1}
# => 3
关于arrays - 如何在数组中找到与条件匹配的元素的索引并从数组中的特定点开始搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309757/