【问题标题】:Add items to array while looping without causing infinite loop?循环时将项目添加到数组而不导致无限循环?
【发布时间】:2018-12-19 15:59:26
【问题描述】:

我试图在循环遍历数组时将重复项添加到数组中:

将其添加到末尾会导致无限循环:

  site.pages.each do |page|
    new_page = page.dup
    new_page.data['permalink'] = File.join('/app', page.url)
    puts new_page.data['permalink']
    puts ''
    site.pages << new_page
  end

将它添加到开头也是如此。

  site.pages.each do |page|
    new_page = page.dup
    new_page.data['permalink'] = File.join('/app', page.url)
    puts new_page.data['permalink']
    puts ''
    site.pages.unshift(new_page)
  end

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

我会先创建所有重复项,然后在第二步中将它们添加到数组中。

new_pages = site.pages.map do |page|
  new_page = page.dup
  new_page.data['permalink'] = File.join('/app', page.url)
end
site.pages += new_pages

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2021-07-25
    • 2020-08-27
    • 2021-05-07
    相关资源
    最近更新 更多