How can I “extract” values from a multidimensional array in a smart way?

前端 未结 3 1173
滥情空心
滥情空心 2021-01-11 10:44

I am using Ruby on Rails 3.2.2 and Ruby 1.9.2.

Given the following multidimensional Array:

[[\"value1\", \"value1_other\"], [\"value2\",         


        
相关标签:
3条回答
  • 2021-01-11 11:10
    >> array = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
    => [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
    >> array.map { |v| v[0] }
    => ["value1", "value2", "value3"]
    
    0 讨论(0)
  • 2021-01-11 11:17

    You can use Array#collect to execute a block for each element of the outer array. To get the first element, pass a block that indexes the array.

    arr.collect {|ind| ind[0]}
    

    In use:

    arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
    => [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
    arr.collect {|ind| ind[0]}
    => ["value1", "value2", "value3"]
    

    Instead of {|ind| ind[0]}, you can use Array#first to get the first element of each inner array:

    arr.collect(&:first)
    

    For the &:first syntax, read "Ruby/Ruby on Rails ampersand colon shortcut".

    0 讨论(0)
  • 2021-01-11 11:18
    arr = [["value1", "value1_other"], ["value2", "value2_other"], ["value3", "value3_other"]]
    
    Solution1 = arr.map {|elem| elem.first}
    
    Solution2 = arr.transpose[0]
    
    0 讨论(0)
提交回复
热议问题