【问题标题】:How to add subarrays to itself? Ruby [duplicate]如何将子数组添加到自身?红宝石 [重复]
【发布时间】:2017-12-09 03:56:21
【问题描述】:

我有一个包含这样子数组的数组:

arr = [[{"big" => "2055", "small" => -"-10", "thin" => "i"},
        {"big" => "2785", "small" => "0", "thin" => "l"}], 
       [{"big" => "7890", "small" => "3", "thin" => "t"},
        {"big" => "2669", "small" => "0,5", "thin" => "f"},
        {"big" => "9000", "small" => "2", "fat" => "O"}]]

我想给自己添加子数组以获得这样的数组:

arr = [{"big" => "2055", "small" => "-10", "thin" => "i"},
       {"big" => "2785", "small" => "0", "thin" => "l"},
       {"big" => "7890", "small" => "3", "thin" => "t"},
       {"big" => "2669", "small" => "0,5", "thin" => "f"},
       {"big" => "9000", "small" => "2", "fat" => "O"}]

这样做:

arr.map! {|x| x+x}

我添加了子数组,但每个哈希出现两次。怎么做才对?

【问题讨论】:

    标签: arrays ruby add sub-array


    【解决方案1】:

    您只想flatten 数组吗?

    arr.flatten
    

    它将每个子数组连接成一个大数组,如果需要,递归。

    [[1,2], [3,4]].flatten
    # => [1, 2, 3, 4]
    

    如果想原地修改数组,可以使用:

    arr.flatten!
    

    不管内部元素是什么样子(整数、字符串、哈希),只要它们不是数组,flatten 就不会触及它们。

    【讨论】:

    • 即使它们是数组,flatten 也接受 level 参数:) [[1,[2]],[3,[4]]].flatten(1) #⇒ [1, [2], 3, [4]]
    • @mudasobwa:是的,但我应该直接关闭问题而不是回答它。
    【解决方案2】:

    Ruby 有一个内置方法尝试使用Array.flatten

    【讨论】:

      【解决方案3】:

      你可以使用flatten!:

      arr.flatten!
      
      #=> [{"big"=>"2055", "small"=>"-10", "thin"=>"i"},
           {"big"=>"2785", "small"=>"0", "thin"=>"l"},
           {"big"=>"7890", "small"=>"3", "thin"=>"t"},
           {"big"=>"2669", "small"=>"0,5", "thin"=>"f"},
           {"big"=>"9000", "small"=>"2", "fat"=>"O"}]
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        arr = arr.flatten
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-24
          • 2014-09-01
          • 1970-01-01
          • 2012-07-05
          • 2014-04-11
          • 2010-12-05
          • 2011-04-26
          • 2013-12-01
          相关资源
          最近更新 更多