示例,考虑以下列表:
list = ['k', 'bac', 'a', 'a', 'zBy', 'yUk', 'A', 'u', 'a']
我在这个列表中搜索'a'的索引。
因此,期望的回报将是:
>>[1, 2, 3, 8]
然而,我只是得到[2,3,8]的返回,因为我的函数不考虑字符串'bac'中的字符。
我的念头:
list.each_index.select{|i| list[i] == value}
我哪里错了?谢谢大家。我在这里学到了很多东西!
list = ['k', 'z', 't', 'c', 'z', 'y', 'x', 'xay']
我想找到这个列表中"z"
元素的索引,它将返回如下:#=> [1,4]
您可以使用each_index
然后select
遍历数组的索引,以满足您的条件:
list.each_index.select{|i| list[i] == ?z} #=> [1, 4]
更新(bis)
我的问题是,我需要实现的代码接受一个数组,并寻找所有的位置,其中一个目标字符可以找到。
如果您想在查找字符'z'
时选择'baz'
的索引,那么您可以在条件中使用String#include?
:
"baz".include? 'z' #=> true
然而,这段代码将是一个能够在其他几个列表中找到这些索引的函数,每个列表都希望返回不同的元素,等等。
将前面的代码封装在一个函数中:
def myfunction arr, c
arr.each_index.select{|i| arr[i].include? c}
end