【问题标题】:Count if there is more than 1 occurrence in a 2d array in Ruby计算 Ruby 中二维数组中是否出现超过 1 次
【发布时间】:2009-10-22 09:10:07
【问题描述】:

我有一个排序数组:

array = [[4, 13], [1, 12], [3, 8], [2, 8], [0, 3]]

这向我显示了一个位置 (array[n][0]) 和该位置的出现次数 (array[n][1])。

我需要测试数组中是否有多个项目与最后一个项目的出现次数相同。

我认为我可以这样做:

array.detect {|i| i[1] == array.last[1] }.length

但它为上面的数组返回 2,并且似乎也为下面的数组返回 2:

array = [[4, 13], [1, 12], [3, 8], [2, 3], [0, 3]]

当我不加长度地运行它时,它总是返回第一次出现。

有没有办法计算出现次数?

编辑:

抱歉,将在新问题中提出我的后续问题。

【问题讨论】:

    标签: ruby arrays count


    【解决方案1】:

    尝试使用find_all 而不是detectdetect 返回第一个匹配项。在您的第一个示例中,这是array[3],它是另一个长度为 2 的数组。这就是它返回 2 的原因(它应该始终为您的数组返回 2 或 nil)。 find_all 将返回匹配的数组(而不是第一个匹配本身),其长度将是您想要的值。

    【讨论】:

      【解决方案2】:

      这是一种更清晰的方式来做你想做的事,没有任何相关的担忧。

      array.count{|i| i[1] == array.last[1]}
      

      【讨论】:

        猜你喜欢
        • 2021-09-02
        • 2022-01-07
        • 2011-05-07
        • 1970-01-01
        • 2020-09-23
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多