【发布时间】:2021-11-25 20:26:33
【问题描述】:
我有一个简单的循环,它输入一个包含多个元素的数组,我的函数的目标是遍历每个元素,ID 的值与当前循环中元素的 ID 相同 并且 'body' 的值是整个相同元素的值。
我正在努力确保循环在每次迭代时重置并输入一个新元素,而不是循环中剩余的一个或另一个。
实现这一目标的最佳方法是什么?
@data = [{ 'url' => 'https://zendesk.com/api/v2/macros/1900002708354.json',
'id' => 1_900_002_708_354,
'actions' => [{ 'field' => 'comment_value_html', 'value' => '{{email}} 360081752739' }],
'restriction' => nil },
{ 'url' => 'https://zendesk.com/api/v2/macros/360081752739.json',
'id' => 360_081_752_739,
'actions' => [{ 'field' => 'comment_value_html', 'value' => '{{IBAN}} ' }],
'restriction' => nil },
{ 'url' => 'https://zendesk.com/api/v2/macros/360081755559.json',
'id' => 360_081_755_559,
'actions' => [{ 'field' => 'comment_value_html', 'value' => '{{email}} 360081752739' }],
'restriction' => nil }]
def run_function
@data.each do |x|
@id = [x.select { |m| m['id'] }]
final_data = x
body = final_data
puts body
end
end
我的 ID 变量当前输出为 [{"id"=>1900002708354}],而我只需要数字。
【问题讨论】:
-
看在上帝的份上,请正确缩进代码。否则代码将无法扫描。
-
在这种特殊情况下,
each的正文应该缩进一级。 -
@SergioTulentsev 好的。对吗?
-
完美。现在,我对代码有疑问。不确定你试图用
@data.select { |m| m['actions'] }.map { |m| m['id'] }做什么,但它肯定不是你认为的那样。在每次迭代时,它将具有相同的值(所有 id 的列表)。特别是,.select { |m| m['actions'] }是无用的(给定提供的输入数组) -
@cbin1 :由于
@data是一个哈希数组,x必须是一个哈希。将select应用于哈希有什么意义?
标签: ruby-on-rails ruby loops