【问题标题】:How can I convert a 'long' table into a 'wide' table through an array?如何通过数组将“长”表转换为“宽”表?
【发布时间】:2012-11-07 21:31:00
【问题描述】:

我想做的事情如下:我有一个从数组构建的表。 比方说:

_________
| a | b |
| c | d |
| e | f |

现在我希望它“转换”为:

_____________
| a | c | e |
| b | d | f |

使用:

鲁比:1.9.3
导轨:3.2.8

目标:

a = [['a','b'],
     ['c','d'],
     ['e','f']]

array_for_table = conv_array_for_table a
=> [['a','c','e'],
    ['b','d','f']]

研究:

Array Class Doc,但我在这里找不到任何相关信息。

以为我可能不得不对哈希数组或其他东西做一些事情..
SO, question

给定一个数组:
array = [[:a,:b],[:a,:c],[:c,:b]]

返回以下哈希:
hash = { [:a => [:b,:c]] , [:c => :b] }

Hash[array] 覆盖之前的关联,产生:
hash = { [:a => :c] , [:c => :b] }

没有积极结果的自我思考

也许我应该用哈希做点什么?

1.9.3p194 :018 > def conv_array a=[]  
1.9.3p194 :019?>   conv_a = []  
1.9.3p194 :020?>   a.each do |k,v|  
1.9.3p194 :021 >       conv_a.push(k)  
1.9.3p194 :022?>   end  
1.9.3p194 :023?>   a.each do |k,v|
1.9.3p194 :024 >       conv_a.push(v)
1.9.3p194 :025?>   end
1.9.3p194 :026?> end  

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: ruby-on-rails arrays multidimensional-array datatable


    【解决方案1】:

    我认为您正在寻找的是矩阵转置.. 看看这里:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/matrix/rdoc/Matrix.html#method-i-transpose

    所以基本上你所要做的就是打电话:

    a.transpose()
    

    甚至更短:

    a.t
    

    【讨论】:

    • 你是我的英雄。这正是我想要的!
    猜你喜欢
    • 2022-01-24
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多