Array.index(a)没有返回任何内容

时间:2012-08-14 03:50:40

标签: ruby

编辑:现在全部修复。初学者错了,但我觉得我的初学者水平已经很好了。但是我没记得要检查的最基本的东西。

我正在尝试在数组中找到X的位置。根据一个网站,它应该像这样工作:

a = [ "a", "b", "c" , "d"]

a.index("d")

然而,这并不能归还任何东西。但是我添加了一个if语句:

a = [ "a", "b", "c" , "d"]

if a.index("d") == 3
  puts "ok"

else 

puts "error"

end

这很有效。然而,显然这不是最佳的,因为我不会猜测只有4个数组元素而是数千个。第一个代码应该有效吗?如果不是,我如何获得阵列号?

次要问题:搜索此值“d”(上面的代码)并获取其位置。如何获取位置信息,将其放入一个整数,以便我可以应用数学。然后获取新数组?

此外,如果要搜索的值可以在此索引之外进行控制,那也是最佳选择。如何使索引指向包含要搜索的内容的字符串?

谢谢,抱歉,我对编程完全陌生。到目前为止,我做得很好。

2 个答案:

答案 0 :(得分:3)

a.index("d")将偏移量返回到数组中:

a = [ "a", "b", "c" , "d"]
a.index("d") # => 3

请记住,数组索引从0开始,而不是1,因此"d"位于索引3,而不是4。

target_index = a.index("d")
puts target_index
# >> 3

答案 1 :(得分:0)

它对我有用。

您使用的是什么ruby版本(ruby -v)。

我的代码(使用ruby 1.9.3):

$ irb
1.9.3-p125 :001 > a = [ "a", "b", "c" , "d"]  => ["a", "b", "c", "d"] 
1.9.3-p125 :002 > a.index("d")  => 3

获取'next'元素,例如获得'b'之后的下一个1元素:

a[a.index("b")+1]

=> "c" 

oucrse“c”位于第2位(数组的零编号),你可以看到

a.index(a[a.index("b")+1])
=> 2