我的哈希值是:合并哈希键
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