Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby检查数组,返回索引,其中数据存在_Ruby_Arrays - Fatal编程技术网

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]]