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]