在Ruby Hash的开头插入元素?

brg*_*brg 8 ruby hash

我有一个用例,我有一个现有的哈希:

response = { aa: 'aaa', bb: 'bbb' }
Run Code Online (Sandbox Code Playgroud)

我需要添加id其中一个键.

当我使用response.merge(id: 'some_id')然后将其转换为JSON时,我得到id了最后一个元素,我不想要它.

我想id: 'some_id'在开头插入response.我试过这个,但迭代它感觉不太好:

new_response = { id: 'some id' }
response.keys.reverse.each {|key| new_response[key] = response[key] }
Run Code Online (Sandbox Code Playgroud)

基本上,我需要像Ruby Arrayunshift这样的类似功能.

irb(main):042:0> arr = [1, 2, 3]
=> [1, 2, 3]
irb(main):043:0> arr.unshift(5)
=> [5, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 27

response = {aa: 'aaa', bb: 'bbb'}
new_response = {new: 'new_value'}.merge(response)
# => {:new=>"new_value", :aa=>"aaa", :bb=>"bbb"}
Run Code Online (Sandbox Code Playgroud)

  • 复杂度是O(n)。但通常情况下,我们期望插入一个键来进行散列是O(1)? (2认同)