在循环时将元素添加到数组而不会导致无限循环吗?

时间:2018-07-11 14:42:41

标签: ruby-on-rails ruby

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

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

  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

1 个答案:

答案 0 :(得分: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