2016-11-28 36 views
0

的陣列我有一個多維數組,其中第一行包含值標籤:Rails的 - 多維數組與標籤散列

[ 
    ['a','b','c'], 
    [1,2,3], 
    [4,5,6] 
] 

我想該數組轉換成散列的數組其中標籤索引中的每個元素:

[ 
    {'a' => 1, 'b' => 2, 'c' => 3}, 
    {'a' => 4, 'b' => 5, 'c' => 6} 
] 

什麼是做到這一點的最快捷方式的Ruby/Rails?

+0

這似乎是一個純Ruby問題,在這種情況下,它不應該有一個Rails標記。通過設置Rails標籤的用戶將其篩選器設置爲僅查看Rails問題可能會感到失望,而不想看到Rails問題的用戶不會看到您的問題。 –

回答

3

這裏有一種方法,以您的多維數組轉換成散列的數組,其中提供的數組的第一個元素充當組在返回的哈希值使用的按鍵:

arr = [ 
     ['a', 'b', 'c'], 
     [1, 2, 3], 
     [4, 5, 6] 
     ] 

labels = arr.shift 

arr.map { |sub_arr| Hash[labels.zip(sub_arr)] } 

# => [{'a' => 1, 'b' => 2, 'c' => 3}, {'a' => 4, 'b' => 5, 'c' => 6}] 

希望它能幫助!

+1

應該注意的是,這個變異會導致'arr',除非問題明確允許,否則不應該這樣做。避免這種情況的一種方法是用'labels,* values = arr'替換'labels = arr.shift'。 –