You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby遍历数组同时获取元素ID与完整内容的最优实现方法

问题原因

  • 循环值残留:你在循环内使用了实例变量@id,实例变量的作用域属于当前类实例,每次循环的赋值会覆盖上一次的结果,若外部其他地方调用该变量会拿到最后一轮循环的残留值。
  • ID格式错误:无需用select过滤哈希键,x本身就是存储元素的哈希对象,直接通过键'id'取值就能拿到纯数字结果,原有select+外层套数组的写法才导致输出为数组套哈希的格式。

最简规范实现

@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 |item|
    # 用局部变量存储,避免实例变量带来的残留问题
    id = item['id']
    body = item
    # 此处可替换为你需要的业务逻辑,以下为测试打印代码
    puts "当前ID:#{id}"
    puts "当前元素内容:#{body}"
    puts "===================="
  end
end

# 调用测试
run_function

如果需要把每次遍历的结果收集起来返回,可以调整为返回数组的写法:

def run_function
  @data.map do |item|
    { id: item['id'], body: item }
  end
end

运行后会得到结构为[{id: 数字, body: 元素内容}, ...]的数组,方便后续业务调用。

内容的提问来源于stack exchange,提问作者cbln1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:11