如何在ruby中使用each_with_index方法,我想改变给定数组的索引

时间:2014-06-10 12:27:25

标签: ruby

我想更改给定数组的索引:

arr = ["cat", "tiger", "lion"]

所以狮子项目的价值为5指数,老虎的价值为4指数,3指数为cat-item

这可能吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

您无法使用each_with_index执行此操作,但可以使用with_index执行此操作。

arr.each.with_index(3) do |e, i|
  ...
end

答案 1 :(得分:1)

是的,您可以创建一个索引方法来访问它。

def get_by_index(array, value)
  array[value-3]
end

您还可以创建一个从数组继承的新数组子类,并重新定义方括号方法,如下所示:

How does defining [square bracket] method in Ruby work?

答案 2 :(得分:0)

你可以用Hash

来做到这一点
hash = {
  3 => "cat",
  4 => "tiger",
  5 => "lion"
}

hash[4]
#=> "tiger"

如果要从数组转换为哈希,可以执行以下操作:

arr = ["cat", "tiger", "lion"]
hash = Hash[arr.each_with_index.map{|v,i| [i+3, v] }]
#=> {"cat"=>3, "tiger"=>4, "lion"=>5}