每个对模拟数组(压缩2个数组)

时间:2012-06-26 11:41:14

标签: ruby arrays

each_pair方法允许在每次循环迭代时获取哈希对:

{ 1 => "a", 2 => "b" }.each_pair do |key, value|
   # do something with #{key} and #{value}
end

如何在每次循环迭代中知道当前数组元素的索引?

array.each do |element|
  # what is element index in array?
end

使用一些递增迭代器有一个无聊的解决方案。但那个迭代器 应该在循环之前分配,并且应该在每次循环时手动递增 迭代。这显然很无聊。

如果有某种方法可以使用1..数组压缩某些数组,那将会很棒 获取像["b", "d", "e"] → [(1,"b"), (2,"d"), (3,"e")] and than pattern matched each element of the pair in |这样的元组数组|`声明。

所以,最后,我要找的是一些函数f,即:

f(["a"]) do |index, element|
  # index == 1, element == "a"
end

2 个答案:

答案 0 :(得分:5)

您可以使用Enumerable::each_with_index

循环遍历数组并获取当前索引

答案 1 :(得分:1)

如果我错了,请纠正我,但我假设你想要一个由带有originall数组索引和值的子数组组成的数组?

a= ["b", "d", "e"]
a.enum_with_index.map {|ind, val| [ind, val]
=> [[0, "b"], [1, "d"], [2, "e"]]