【问题标题】:Loop though multi-dimensional array in ruby在ruby中循环遍历多维数组
【发布时间】:2019-09-27 03:41:31
【问题描述】:

这是我遇到的问题。 “循环遍历多维数组并打印出数组中偶数项的完整信息(即多维数组中的第二个和第四个数组)”。我的任务是输出所有数据在应该是[1] [3]的偶数数组中,它将仅输出数组“derrick”和“andrew”中的所有信息。

kristopher = ["kris", "palos hills", "708-200", "green"]
derrick = ["D-Rock", "New York", "773-933", "green"]
willie = ["William", "Humbolt Park", "773-987", "Black"]
andrew = ["drew", "northside", "773-123","blue"]

friends = [kristopher, derrick, willie, andrew]

friends.each do |arr|
print arr [0..4]
end

#Output

["kris", "palos hills", "708-200", "green"]["D-Rock", "New York", "773-933", "green"]["William", "Humbolt Park", "773-987", "Black"]["drew", "northside", "773-123", "blue"]

【问题讨论】:

    标签: ruby loops multidimensional-array


    【解决方案1】:

    类似这样的:

    kristopher = ["kris", "palos hills", "708-200", "green"]
    derrick = ["D-Rock", "New York", "773-933", "green"]
    willie = ["William", "Humbolt Park", "773-987", "Black"]
    andrew = ["drew", "northside", "773-123","blue"]
    
    friends = [kristopher, derrick, willie, andrew]
    
    (1...friends.length).step(2).each do |friendIndex|
        friend = friends[friendIndex]
        print friend 
    end
    

    【讨论】:

      【解决方案2】:

      您可以检查Enumerable#partitionEnumerable#each_with_index,它们有助于根据元素索引的条件拆分数组。如果您使用Integer#even?,您可以在偶数和奇数索引之间进行分区(在这种情况下为+ 1)。

      friends.partition.with_index { |_, i| (i + 1).even? }
      #=> [[["D-Rock", "New York", "773-933", "green"], ["drew", "northside", "773-123", "blue"]], [["kris", "palos hills", "708-200", "green"], ["William", "Humbolt Park", "773-987", "Black"]]]
      

      所以,对于你的情况,取第一个元素:

      friends.partition.with_index { |_, i| (i + 1).even? }.first
      

      或者你可以直接用Enumerable#select

      friends.select.with_index { |_, i| (i + 1).even? }
      

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 1970-01-01
        • 2014-08-21
        • 1970-01-01
        相关资源
        最近更新 更多