簡體   English   中英

Ruby:基於以下元素遍歷數組

[英]Ruby: Iterating Over Array Based on Following Elements

我正在使用Ruby創建每周一次的會議報告。 我有一個包含會議名稱的大型數組,並且根據會議發生的周數,每個元素都有多個實例。

我從以下簡化示例開始:

meetingsArray = ["boardInvestorsMeeting", "clientMeeting", "clientMeeting", "clientMeeting", "waterCoolerChat", "waterCoolerChat",  "waterCoolerChat", "waterCoolerChat"]

我的嘗試:

meetingsArray = ["boardInvestorsMeeting", "clientMeeting", "clientMeeting", "clientMeeting", "waterCoolerChat", "waterCoolerChat",  "waterCoolerChat", "waterCoolerChat"]
for m in meetingsArray[m.to_i]
  if (meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 1] && meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 2] && meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 3])
    puts "Week of the 1st: " + "#{meetingsArray[m.to_i].inject{|a| a}}"
  elsif (meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 1] && meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 2])
    puts "Week of the 8th: " + "#{meetingsArray[m.to_i].inject{|a| a}}"
  elsif (meetingsArray[m.to_i] === meetingsArray[(m.to_i) + 1])
    puts "Week of the 15th: " + "#{meetingsArray[m.to_i].inject{|a| a}}"
  else
    puts "Week of the 22nd: " + "#{meetingsArray[m.to_i].inject{|a| a}}"
  end
end

控制台錯誤:

iMac:workspace user1$ ruby loop.rb
loop.rb:3:in `<main>': undefined method `each' for "boardInvestorsMeeting":String (NoMethodError)

所需結果:

Week of the 1st: boardInvestorsMeeting
Week of the 1st: clientMeeting
Week of the 8th: clientMeeting
Week of the 15th: clientMeeting
Week of the 1st: waterCoolerChat
Week of the 8th: waterCoolerChat
Week of the 15th: waterCoolerChat
Week of the 22nd: waterCoolerChat

請注意, "clientMeeting"前面有"Week of the 1st:"然后是"Week of the 8th:"然后是"Week of the 15th:" ,因為重復了兩次; "boardInvestorsMeeting"只有"Week of the 1st:"在它前面的,因為它不重復,只出現在meetingsArray一次。

干得好!

meetingsArray = ["boardInvestorsMeeting", "clientMeeting", "clientMeeting", "clientMeeting", "waterCoolerChat", "waterCoolerChat",  "waterCoolerChat", "waterCoolerChat"]
counts = Hash.new(0)
meetingsArray.each { |name| counts[name] += 1 }

counts.each do |k,v|
    case v
    when 1
        puts "Week of the 1st: #{k}" 
    when 2
        puts "Week of the 1st: #{k}"
        puts "Week of the 8th: #{k}"
    when 3
        puts "Week of the 1st: #{k}"
        puts "Week of the 8th: #{k}"
        puts "Week of the 15th: #{k}"
    when 4
        puts "Week of the 1st: #{k}"
        puts "Week of the 8th: #{k}"
        puts "Week of the 15th: #{k}"
        puts "Week of the 22nd: #{k}"
    end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM