Ruby检查数组,返回索引,其中数据存在
如何检查数组中是否存在非零的数据,然后返回该数据的索引? 例如:Ruby检查数组,返回索引,其中数据存在,ruby,arrays,Ruby,Arrays,如何检查数组中是否存在非零的数据,然后返回该数据的索引? 例如: myary = [nil, nil, 300, nil, nil] # <= index 2 is 300 myary=[nil,nil,300,nil,nil]#您可以使用: 我倾向于使用,部分原因是它读起来不错;“选择”一词描述了您想要做的事情 代码 仅就指数而言: def indices_only(arr) arr.size.times.select { |i| arr[i] } end 如果返回非零值和相应的
myary = [nil, nil, 300, nil, nil] # <= index 2 is 300
myary=[nil,nil,300,nil,nil]#您可以使用:
我倾向于使用,部分原因是它读起来不错;“选择”一词描述了您想要做的事情
代码
仅就指数而言:
def indices_only(arr)
arr.size.times.select { |i| arr[i] }
end
如果返回非零值和相应的索引更有用:
def values_and_indices(arr)
arr.each_with_index.select(&:first)
end
示例
arr1 = [nil, nil, 300, nil, nil]
arr2 = [nil, nil, 300, 400, nil]
indices_only(arr1) #=> [2]
indices_only(arr2) #=> [2, 3]
values_and_indices(arr1) #=> [[300, 2]]
values_and_indices(arr2) #=> [[300, 2], [400, 3]]
对不起,我无意中删除了这篇文章:(我已经取消了删除。非常感谢,这真的很有帮助:)
def values_and_indices(arr)
arr.each_with_index.select(&:first)
end
arr1 = [nil, nil, 300, nil, nil]
arr2 = [nil, nil, 300, 400, nil]
indices_only(arr1) #=> [2]
indices_only(arr2) #=> [2, 3]
values_and_indices(arr1) #=> [[300, 2]]
values_and_indices(arr2) #=> [[300, 2], [400, 3]]