2017-01-24 81 views
-3

以下是我班的問題。將數組轉換爲哈希(紅寶石)

鑑於變量some_array = [[:a, 123], [:b, 456]]
轉換some_array這個散列:{a: 123, b: 456}

+2

'的some_array.to_h' –

+3

可能的複製[什麼是一個數組轉換爲紅寶石散列的最佳方式](HTTP:// stackoverflow.com/questions/39567/what-is-the-best-way-to-convert-an-array-to-a-hash-in-ruby) –

+0

請閱讀「[問]」,包括鏈接的頁面,「 [mcve]「如果你寫的代碼有問題,並且http://meta.stackoverflow.com/q/261592/128421 –

回答

2

我是初學者也一樣,所以這可能是有點低效率的,但是這是我會怎樣解釋(還有更簡單的方法,我敢肯定,但既然你提到這是一類,我想我會以長形式講解):

hash={} 

some_array.each do |item| 
    hash[item[0]] = item[1] 
end 

只是爲了解釋了一下,我用C開始重新使用一個空的散列,我稍後會使用它。

然後我使用each方法循環使用some_array。這將some_array中的每個元素分配給變量item。假設some_array是一個嵌套數組(基本上意味着它是一個數組數組),則item變量將取內部數組的值 - 例如item = [:a, 123]

然後我們可以在創建散列時訪問item中的每個元素。遵循前面給出的item[0] == :aitem[1] == 123的相同示例。

然後我在創建散列時使用了一些簡寫 - 即hash[key] = value。在這種情況下,我希望密鑰是:a(它是項目[0])和值爲123(即項目[1])。所以我可以使用hash[item[0]] = item[1]

希望有幫助!

+0

爲什麼當'.to_h'方法執行此操作時會這樣做?儘管出於學術原因實施此類教育可能具有教育意義,但解決方案是閱讀手冊並查找可用的工具。 – tadman

+0

謝謝@tadman,因爲它似乎是一個基本問題,我想他一定剛剛開始,並會很感激解釋。但是你的評論也是有效的,使用可用的工具同樣重要。 –

+0

我不是想在這裏給你打石膏,只是說在生產代碼中你應該用書來做。一如既往,渴望更多地瞭解並做實驗。例如,如果您想使用該方法,可以使用['each_with_object'](http://ruby-doc.org/core-2.4.0/Enumerable.html#method-i-each_with_object)來改進您的代碼。有時候你正在做的是有效的,因爲你想對每個'item [1]'執行轉換。 – tadman

1

要轉換在散列簡單地使用.to_h方法

some_array.to_h