【问题标题】:How to count the number of arrays in a nested array如何计算嵌套数组中的数组数量
【发布时间】:2016-06-24 15:53:36
【问题描述】:

我要统计一个数组的嵌套数组中的数组个数

array = [[["-", 0, "I"], ["+", 0, "you"]], [["+", 3, "i"]], [["-", 4, "loved"], ["-", 5, "that"], ["+", 5, "it"], ["+", 6, "tasted"], ["+", 7, "like"]]]

此示例将在 array 数组中的数组中包含 8 个嵌套数组。 (不知道我说得对不对)

【问题讨论】:

  • 你想要什么? 8?您可以为此使用正则表达式。我认为这是最简单的方法
  • array.first.count 应该怎么做? @Desorder - 你能解释一下你将如何在这里使用正则表达式吗?
  • @BroiSatse array.first.countarray.first.size 给出 2。
  • 啊,有两个数组,很难发现那些括号。 array.flatten(1).count 可以。
  • @Desorder - 正则表达式可用于字符串,您想如何将正则表达式模式应用于数组?先转成字符串?

标签: ruby-on-rails arrays ruby ruby-on-rails-4


【解决方案1】:

最简单/最干净的方法是将数组部分展平一个嵌套级别:

array.flatten(1).count

其他选项是对子数组求和:

array.inject([], :+).count

但是,您需要问自己的真正问题是 - 我是如何得到如此奇怪的结构的?

【讨论】:

    【解决方案2】:

    这里的关键是正确地陈述问题 - 我假设它是计算嵌套数组中的数组数量,它们本身不包含其他数组。

    def count_inner_arrays(arr)
      sub_arrays = arr.select { |el| el.is_a? Array }
      sub_arrays.empty? ? 1 : sub_arrays.map(&method(:count_inner_arrays)).inject(0, :+)
    end  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多