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
答案 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