Arrays 如何使用ruby在字符串数组中预加整数?
我在一个方法中使用以下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
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