使用数组上的每个迭代并返回更大值的索引

时间:2014-06-17 17:51:26

标签: ruby arrays while-loop each

a = [2,2,4,8,9]
ind = 1

a.each do |x|

if a[ind] < a[x]
puts x
end

end

我如何使用&#34;每个&#34;在一个数组上迭代并返回Ruby中某个值大于某个值的索引?

我想迭代给定的数组a = [2,2,4,8,9]。我想迭代整个数组,并使用条件,将所有值都放在a[ind] < a[x]

我收到错误comparison of fixnum nil failed。 - 我该如何解决这个问题?

我也尝试了这个,为这个过程设置一个范围:

    a = [ 2,2,3,4,5]

x = 0
while x >= 0 && x <= 4

a.each do |x|
    if a[1] < a[x]
        puts x
    end

end
x += 1 
end

3 个答案:

答案 0 :(得分:2)

您想要选择索引小于自身的所有元素。你可以在Ruby中完全说出来:

a.select.with_index {|el, idx| idx < el }

甚至

a.select.with_index(&:>)

答案 1 :(得分:1)

当您使用each迭代数组时,x表示项目的,而不是其位置:

a = [2,2,4,8,9]
ind = 1

a.each do |x|
  if a[ind] < x
    puts x
  end
end
# prints:
# 4
# 8
# 9

更新

如果要打印值大于该值的元素的索引,则应使用each_with_index

a = [2,2,4,8,9]
ind = 1

a.each_with_index do |x, i|
  if a[ind] < x
    puts i
  end
end
# prints:
# 2
# 3
# 4

答案 2 :(得分:0)

def filtered_index(array,n)
  array.each_with_index{|e,i| puts i if e > n}
end