Stephen Grayson Stephen Grayson - 6 months ago 9
Ruby Question

Ruby - How to shift the values in a hash to another key

I am having trouble figuring the best approach to shift some values to another key. Every value most go to the next key, and the last key's values need to be completely removed. For example

hash1 = { a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9] }

desired_hash = hash1.some_method

desired_hash === { a: [], b: [1, 2, 3], c: [4, 5, 6] }


My thought is to rename the hash keys but was not sure if this was the best approach.

Any help would be great, thank you.

Answer
hash1 = { a: [1, 2, 3], b: [4, 5, 6], c: [7, 8, 9] }
keys = hash1.keys
=> [:a, :b, :c]
values = hash1.values
=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

keys.zip(values.unshift([])).to_h
=> {:a=>[], :b=>[1, 2, 3], :c=>[4, 5, 6]}
Comments