Arrays 如何使用ruby在字符串数组中预加整数?

Arrays 如何使用ruby在字符串数组中预加整数?,arrays,ruby,Arrays,Ruby,我在一个方法中使用以下ruby代码创建了一个数组: array[i] = {:key => response.body['results'][i]['path']['key'], :value => response.body['results'][i]['value'], :epoch_time => response.body['results'][i]['path']['reftime'] / 1000} arr

我在一个方法中使用以下ruby代码创建了一个数组:

array[i] = {:key => response.body['results'][i]['path']['key'],  
              :value => response.body['results'][i]['value'],
              :epoch_time => response.body['results'][i]['path']['reftime'] / 1000}
array[i][:collection] = response.body['results'][i]['path']['collection']
我想要另一个方法。枚举_数组或通过附录I的东西-I是数组的对应索引值

例如,对于数组[0][:value]=这是第一个答案

然后:

数组=枚举数组数组数组

=>数组[0][:值]=0-这是第一个答案


谢谢。

如果您有以下带有哈希的数组:

[{ value: "foo" }, { value: "bar" }, { value: "baz" }]
您需要以下输出:

[{ value: "0 - foo" }, { value: "1 - bar" }, { value: "2 - baz" }]
你可以这样做:

def enumerate_array(array)
  array.each_with_index do |hash, index|
    hash[:value] = "#{index} - #{hash[:value]}"
  end
end

如果您使用的是ruby 2.x,则可以使用_索引将map和链接成一行:

array = array.map.with_index { |item, index| "#{index} - #{item}" }

复制原始散列:

def enumerate_array(array)
  array.map.with_index { |h, i| h.merge({value: "#{i} - #{h[:value]}"}) }
end
def enumerate_array!(array)
  array.each_with_index { |h, i| h[:value] = "#{i} - #{h[:value]}" }
end
更改原始哈希:

def enumerate_array(array)
  array.map.with_index { |h, i| h.merge({value: "#{i} - #{h[:value]}"}) }
end
def enumerate_array!(array)
  array.each_with_index { |h, i| h[:value] = "#{i} - #{h[:value]}" }
end
如果arr发生突变:

arr.each_index { |i| arr[i][:value] = "#{i} - #{arr[i][:value] }" }
  #=> [{:value=>"0 - dog"}, {:value=>"1 - cat"}, {:value=>"2 - pig"}] 
arr
  #=> [{:value=>"0 - dog"}, {:value=>"1 - cat"}, {:value=>"2 - pig"}] 
如果在重置arr后arr不发生突变:


这不会导致数组只保存字符串而不是散列吗?这样,数组元素将映射到字符串。如果您完全复制了它。从块返回的任何内容都在数组中设置。修改它以返回您需要的内容。将帮助您获取阵列的索引。我正在尝试从下面的列表中评估使用哪种解决方案。
def enumerate_array(array)
  array.each_with_index do |hash, index|
      hash.each_pair { |key, value| hash[key] = "#{index} - #{value}" }
  end
end