我的哈希值是:合併哈希鍵
hash = { text:'abc', text1:'123', other values }
我想有:
{ text: 'abc123', other values }
我該如何合併兩個按鍵爲單一(僅text+text1
應該合併)?
我的哈希值是:合併哈希鍵
hash = { text:'abc', text1:'123', other values }
我想有:
{ text: 'abc123', other values }
我該如何合併兩個按鍵爲單一(僅text+text1
應該合併)?
您可以使用Object#tap
爲你的目標:
hash.tap { |h| h[:text] += h.delete(:text1) }
=> {:text=>"abc123", other_values}
由於'delete'返回您可能只想使用'h [:text] = h [:text] + h.delete(:text1)'刪除的值'並刪除以下行。 – spickermann
@spickermann,當然,謝謝 – Ilya
爲什麼你需要點擊一個數組而不是僅僅修改一個字符串值? – mudasobwa
hash[:text] << hash.delete(:text1)
尼特和清潔解決方案 –
@Gagan,我不確定「尼特」,但它肯定是乾淨的。 Mudsie,好的! 'h = hash.dup; h [:text] << h.delete(:text1)'如果'hash'不會被突變。 –
@CarySwoveland如果散列不會被突變,那麼帶有'hash.dup.tap'的解決方案似乎更合適:它將返回散列本身,並且它不需要臨時局部變量。 – mudasobwa
此在哈希唯一的值或者這只是一個例子嗎?可能還有其他的鍵(比如說:'foo'和'foo1',也許還有'foo2')? – spickermann
你們,這只是個例子,還有其他的價值 – user
鑰匙背後的模式是什麼?它總是一個字符的組合(如'foobar'),其他鍵以相同的組合開始,但以數字結尾(如'foobar9346')?加入時應如何訂購這些值? – spickermann