Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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:1.8.7:如何在元素不为零的数组中找到索引?_Ruby - Fatal编程技术网

Ruby:1.8.7:如何在元素不为零的数组中找到索引?

Ruby:1.8.7:如何在元素不为零的数组中找到索引?,ruby,Ruby,应返回[0,1,2,5,7] 通过@the tin man:state.map.with_index{e,i |(e.nil?)?nil:i}.compact 不幸的是,这只适用于1.9,我相信有更快的方法,但是: my_array = [0, 1, 2, nil, nil, 3, nil, 4, nil] result=[] my_array.each_with_index do | item,index| 结果这是v1.9.2版的结果: result = [] my_array.each_

应返回
[0,1,2,5,7]

通过@the tin man:state.map.with_index{e,i |(e.nil?)?nil:i}.compact


不幸的是,这只适用于1.9,我相信有更快的方法,但是:

my_array = [0, 1, 2, nil, nil, 3, nil, 4, nil]
result=[]
my_array.each_with_index do | item,index|

结果这是v1.9.2版的结果:

result = []
my_array.each_with_index do |item, index|
  result << index unless item.nil?
end
在我回答时,问题发生了变化,因此这与现在的问题相匹配:

my_array.map.with_index{ |e,i| (e.nil?) ? i : nil }.compact
 => [3, 4, 6, 8] 
这只是一个切换三元运算符值的例子

问题又一次改变了。在第1.8.7和1.9.2条中:

my_array.map.with_index{ |e,i| (e.nil?) ? nil  : i }.compact
 => [0, 1, 2, 5, 7] 

我想你的意思是他们在哪里,你的问题标题与你的示例显示的不匹配。你的意思是“我如何找到nil元素的索引?”哈哈,谢谢,我搞糊涂了。修正了。这比我从@dmarkow state学到的要短。每个带有{索引{项,索引{剩余}的_移动我如何使用ruby 1.8.7做到这一点?@Dernalia,请参阅添加的两个示例
ruby-1.8.7-p330 :004 > my_array.each_with_index.map{|e,i| (e.nil?) ? nil : i }.compact
 => [0, 1, 2, 5, 7] 

ruby-1.9.2-p136 :002 > my_array.each_with_index.map{|e,i| (e.nil?) ? nil : i }.compact
 => [0, 1, 2, 5, 7]