Saya memiliki kondisi di mana, saya mendapatkan hash
hash = {"_id"=>"4de7140772f8be03da000018", .....}
dan saya ingin hash ini sebagai
hash = {"id"=>"4de7140772f8be03da000018", ......}
PS : Saya tidak tahu apa kunci dalam hash, itu acak yang dilengkapi dengan awalan "_" untuk setiap kunci dan saya ingin tidak ada garis bawah
ruby-on-rails
ruby
ruby-on-rails-3
hash
Manish Das
sumber
sumber
_id
kunciid
dalam array dokumen MongoDBJawaban:
sumber
hash.delete :old_key
kembali dan penghapusan menggunakan kunci lama. WOW, saya ingin tato di suatu tempat :-D Terima kasihrails Hash memiliki metode standar untuk itu:
http://api.rubyonrails.org/classes/Hash.html#method-i-transform_keys
UPD: metode ruby 2.5
sumber
Jika semua kunci adalah string dan semuanya memiliki awalan garis bawah, maka Anda dapat menambal hash di tempat dengan ini:
The
k[1, k.length - 1]
bit meraih semuak
kecuali karakter pertama. Jika Anda ingin salinan, maka:Atau
Anda juga dapat menggunakan
sub
jika Anda tidak menyukaik[]
notasi untuk mengekstraksi substring:Dan, jika hanya beberapa tombol memiliki awalan garis bawah:
Modifikasi serupa dapat dilakukan untuk semua varian lain di atas tetapi dua ini:
harus baik-baik saja dengan kunci yang tidak memiliki awalan garis bawah tanpa modifikasi tambahan.
sumber
Anda dapat melakukan
Ini seharusnya cocok untuk kasus Anda!
sumber
Jika kita ingin mengganti nama kunci khusus dalam hash maka kita dapat melakukannya sebagai berikut:
Misalkan hash saya
my_hash = {'test' => 'ruby hash demo'}
Sekarang saya ingin mengganti 'test' dengan 'message', maka:
my_hash['message'] = my_hash.delete('test')
sumber
hash[:new_key] = has[:old_key]
:, bukannya itu:, ituhash[:dynamic_key] = hash[:_dynamic_key]
pertanyaan yang jelas tentang regex dan bukan pengganti hash sederhana.sumber
sumber
Saya pergi berlebihan dan menemukan yang berikut. Motivasi saya di balik ini adalah untuk menambahkan kunci hash untuk menghindari konflik ruang lingkup ketika bergabung bersama / meratakan hash.
Contohnya
Perpanjang Kelas Hash
Menambahkan metode rekey ke instance Hash.
Contoh Prependen
Trim Contoh
Meratakan dan Menambahkan "Cakupan"
Jika Anda melewatkan hash kembali ke rekey itu akan menggabungkan hash yang memungkinkan Anda untuk meratakan koleksi. Ini memungkinkan kami untuk menambah cakupan kunci kami saat meratakan hash untuk menghindari menimpa kunci saat penggabungan.
sumber
Jawaban sebelumnya cukup baik, tetapi mereka mungkin memperbarui data asli. Jika Anda tidak ingin data asli terpengaruh, Anda dapat mencoba kode saya.
Pertama itu akan mengabaikan kunci '_id' kemudian bergabung dengan yang diperbarui.
sumber