【发布时间】:2012-11-19 12:40:57
【问题描述】:
给定一个数组,如何找到符合给定条件的元素的所有索引?
例如,如果我有:
arr = ['x', 'o', 'x', '.', '.', 'o', 'x']
要查找项目为x 的所有索引,我可以这样做:
arr.each_with_index.map { |a, i| a == 'x' ? i : nil }.compact # => [0, 2, 6]
或
(0..arr.size-1).select { |i| arr[i] == 'x' } # => [0, 2, 6]
有没有更好的方法来实现这一点?
【问题讨论】:
-
您在寻找逻辑还是语法,可以帮助您解决逻辑问题,但不能帮助您解决语法问题 :) 对 ruby 不太熟悉...您可以使用
regexp -
我猜逻辑和语法 :) 不确定正则表达式,因为项目不是必需的字符串。
-
这是我认为 Python 的列表推导式读起来确实更好的少数情况之一:
[i for i,a in enumerate(arr) if a == 'x']。 -
我很烦
Enumerable#find_indices(elem)不在 ruby 标准库中。不知何故,这将提出一个合理的功能请求。