Cara rename property object JavaScript dinamis yang aman adalah menyalin nilai ke key baru lalu menghapus key lama. Kuncinya memakai bracket notation, karena dot notation tidak bisa membaca nama key dari variabel. Pola dasarnya obj[newKey] = obj[oldKey]; delete obj[oldKey]; dan pola ini jalan sama di browser maupun Node.js.
Jawaban cepat rename key object dengan nama dinamis
Gunakan variabel untuk nama key lama dan baru, lalu akses object dengan obj[variabel].
let user = { nama_lama: "Andi" };
let oldKey = "nama_lama";
let newKey = "nama";
user[newKey] = user[oldKey];
delete user[oldKey];
console.log(user); // { nama: "Andi" }
Kode di atas tidak butuh API browser atau Node.js khusus. delete hanya menghapus property milik object tersebut, nilainya ikut pindah karena sudah disalin sebelumnya.
Langkah rename property object secara dinamis
Ikuti urutan ini agar data tidak hilang saat key lama dihapus:
1. Simpan nama key lama dan baru di variabel.
2. Cek key lama ada dengan in atau hasOwnProperty.
3. Salin nilai ke key baru.
4. Hapus key lama dengan delete.
5. Kembalikan object bila dipakai sebagai function util.
function renameKey(obj, oldKey, newKey) {
if (!(oldKey in obj)) return obj;
obj[newKey] = obj[oldKey];
delete obj[oldKey];
return obj;
}
Pengecekan pada langkah 2 penting. Tanpa itu, key lama yang salah ketik membuat property baru berisi undefined.
Pilihan metode rename untuk kondisi berbeda
Pilih metode berdasarkan apakah object boleh diubah langsung:
- Mutasi langsung dengan assignment plus
deleteuntuk object kecil dan lokal, misalnya object form sebelum dikirim. - Buat object baru dengan spread dan destructuring agar immutable, cocok untuk state React atau data yang dipakai di banyak tempat.
- Rename banyak key lewat mapping object berisi pasangan
lama: baru, cocok untuk membersihkan respons API. - Perhatikan referensi. Mutasi mengubah semua variabel yang menunjuk ke object yang sama, sedangkan spread membuat object baru.
const { nama_lama, ...sisa } = user;
const userBaru = { ...sisa, nama: nama_lama };
Metode | Fungsi | Catatan
| Metode | Fungsi | Catatan |
|---|---|---|
| Bracket assignment | Menyalin nilai ke key dinamis | Mengubah object asli |
| delete | Menghapus key lama | Key bentrok bisa menimpa data |
| Spread plus rest | Membuat object hasil rename | Hanya shallow copy |
| Object.fromEntries | Rename massal lewat mapping | Cocok untuk banyak key |
Jika key baru sudah ada, assignment menimpa nilainya. Cek dulu bila data lama tidak boleh hilang. Spread juga tidak meng-clone object bertingkat, jadi object di dalamnya tetap berbagi referensi.
FAQ
Apakah urutan key berubah setelah rename?
Ya, key baru umumnya pindah ke akhir urutan enumerasi string.
Bagaimana rename tanpa menghapus object asli?
Gunakan destructuring dan spread untuk membuat object baru berisi key pengganti.
Apa yang terjadi jika key baru sudah ada?
Nilai lama pada key baru tertimpa oleh nilai dari key lama.